eggjs&sequelize使用教程一(环境搭建)
来源:互联网 发布:最优化理论视频 编辑:程序博客网 时间:2024/05/17 06:21
前言
原来想写express+sequelize的,但是公司现在放弃了express,转战eggjs,所以这个的教程就以egg为基础
安装egg
官方有完整的教程
需要安装的模块 package.js
zengwe@zengwe-PC:egg-example$ cat package.json { "name": "example", "version": "1.0.0", "description": "", "private": true, "dependencies": { "egg": "^1.9.0", "egg-scripts": "^2.1.0", "egg-sequelize": "^3.1.0", "mysql2": "^1.5.0" }, "devDependencies": { "autod": "^2.10.0", "autod-egg": "^1.0.0", "egg-bin": "^4.3.5", "egg-ci": "^1.8.0", "egg-mock": "^3.13.0", "eslint": "^4.10.0", "eslint-config-egg": "^5.1.0", "webstorm-disable-index": "^1.2.0" }, "engines": { "node": ">=8.9.0" }, "scripts": { "start": "egg-scripts start --daemon", "stop": "egg-scripts stop", "dev": "egg-bin dev", "debug": "egg-bin debug", "test": "npm run lint -- --fix && npm run test-local", "test-local": "egg-bin test", "cov": "egg-bin cov", "lint": "eslint .", "ci": "npm run lint && npm run cov", "autod": "autod" }, "ci": { "version": "8" }, "repository": { "type": "git", "url": "" }, "author": "", "license": "MIT"}
整体的结构目录
zengwe@zengwe-PC:egg-example$ tree ./ -I node_modules./├── app│ ├── controller│ │ └── home.js│ ├── model│ │ └── movie.js│ ├── public│ ├── router.js│ └── service│ └── test.js├── appveyor.yml├── config│ ├── config.default.js│ └── plugin.js├── logs│ └── example│ ├── common-error.log│ ├── egg-agent.log│ ├── egg-web.log│ └── example-web.log├── package.json├── package-lock.json├── README.md├── README.zh-CN.md├── run│ ├── agent_config.json│ ├── agent_config_meta.json│ ├── application_config.json│ └── application_config_meta.json└── test └── app └── controller └── home.test.js
配置sequelize
我在config目录下新建一个config.sequelize.js的文件用来放sequelize的配置,因为这个配置文件可能会有很多内容,包括sequelize全局钩子函数或者读写分离等等,所以单独分出一个文件,配置如下
'use strict';const equelize = { dialect: 'mysql', // support: mysql, mariadb, postgres, mssql database: 'douban_test', host: 'localhost', port: '3306', username: 'root', password: '123456',};module.exports = equelize;
在config.default.js中引入
'use strict';const sequelizeConfig = require('./config.sequelize');module.exports = appInfo => { const config = exports = {}; // use for cookie sign key, should change to your own and keep security config.keys = appInfo.name + '_1510991679580_9861'; // add your config here config.middleware = []; config.sequelize = sequelizeConfig; return config;};
启用sequelize模块
在config文件下的plugin.js中添加这个模块
'use strict';// had enabled by egg// exports.static = true;exports.sequelize = { enable: true, package: 'egg-sequelize',};exports.security = { enable: false,};
ps:这里关闭security的原因是不用每次动态的添加token,开发阶段很麻烦
在app的目录下建一个model的文件并建一个model
'use strict';module.exports = app => { const { INTEGER, STRING } = app.Sequelize; const Movie = app.model.define('Movie', { id: { type: INTEGER, autoIncrement: true, primaryKey: true, }, name: { type: STRING(100), allowNull: false, }, }, { freezeTableName: true, tableName: 'z_movie', timestamps: false, }); return Movie;};
在homeController中试一次
'use strict';const Controller = require('egg').Controller;class HomeController extends Controller { * index() { const serviceRes = yield this.ctx.service.test.index(); const result = yield this.app.model.Movie.findAll(); console.log(result); this.ctx.body = 'hi, egg' + serviceRes; }}module.exports = HomeController;
上面是现在的controller的写法原来的是
module.exports = app => { return class HomeController extends app.Controller { * index() { const result = yield app.model.Movie.findAll(); console.log(result); this.ctx.body = 'hi, egg' + serviceRes; }}module.exports = HomeController;
运行
npm run dev
zengwe@zengwe-PC:egg-example$ npm run dev> example@1.0.0 dev /media/zengwe/Bcode/egg/douban/egg-example> egg-bin dev2017-11-19 23:14:54,132 INFO 12666 [master] egg version 1.11.0sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules/sequelize/lib/sequelize.js:236:132017-11-19 23:14:57,327 INFO 12672 [model] SELECT VERSION() as `version` (7ms)2017-11-19 23:14:57,354 INFO 12672 [model] SELECT 1+1 AS result (3ms)2017-11-19 23:14:57,371 INFO 12666 [master] agent_worker#1:12672 started (3227ms)
bingo成功
访问 http://127.0.0.1:7001
2017-11-19 23:18:28,744 INFO 12683 [model] SELECT `id`, `name` FROM `z_movie` AS `Movie`; (2ms)[ Movie { dataValues: { id: 1, name: '无间道' }, _previousDataValues: { id: 1, name: '无间道' }, _changed: {}, _modelOptions: { timestamps: false, validate: {}, freezeTableName: true, underscored: true, underscoredAll: false, paranoid: false, rejectOnEmpty: false, whereCollection: null, schema: null, schemaDelimiter: '', defaultScope: {}, scopes: [], hooks: {}, indexes: [], name: [Object], omitNull: false, tableName: 'z_movie', sequelize: [Object], uniqueKeys: {} }, _options: { isNewRecord: false, _schema: null, _schemaDelimiter: '', raw: true, attributes: [Object] }, __eagerlyLoadedAssociations: [], isNewRecord: false } ]
bingo成功
阅读全文
0 0
- eggjs&sequelize使用教程一(环境搭建)
- eggjs&sequelize使用教程一(表单自动验证)
- sequelize(一)
- Struts教程(一):搭建Struts环境,初步使用Struts
- Git使用教程(一)--搭建Github环境
- Github使用教程(一)--搭建Github环境
- Git使用教程(一)--搭建Github环境
- Android教程(一)-- 环境搭建
- springMVC教程(一) 搭建环境
- PhoneGap教程(一):环境搭建
- Odoo开发教程(一):使用pycharm搭建开发调试环境
- 【wxlua教程一】搭建环境
- 使用Axis2搭建WebService环境(一)
- Github初使用(一)------环境搭建
- PHP,php环境搭建,PHP教程(一)
- JBossESB教程(一)——开发环境的搭建
- maven学习教程(一)——环境搭建
- gstreamer 学习教程(一) 开发环境搭建
- android 生成xml以及xml解析
- [LeetCode] 475. Heaters
- 1. 求平均年龄
- 400字重写深度学习的知识框架
- C语言中的int类型
- eggjs&sequelize使用教程一(环境搭建)
- windows 7 x64 下的 System Call
- 基于Tcp&UDP协议的简单Socket通信实例(JAVA)
- S5PV210启动详解
- Opatch及PSU下载地址
- QQ第三方联合登录视频教程
- 关于电路
- 迭代器和组合模式
- 百钱买百鸡,公鸡五元一只,母鸡三元一只,小鸡一元三只