在egg中使用egg-sequelize插件
- sequelize是与数据库操作相关的库
- 安装:
npm install --save egg-sequelize mysql2
在egg中配置sequelize
- 1.在
config/plugin.js
中引入 egg-sequelize插件,代码如下
sequelize: {
enable: true,
package: 'egg-sequelize'
}
- 2.在
config/config.default.js
中编写sequelize配置
sequelize:{
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
username: 'root',
password: 'example',
database: 'test'
}
在Model层定义user的结构
module.exports = app =>{
const { STRING } = app.Sequelize;
const User = app.model.define(
"user",
{ name: STRING(30) },
{ timestamps: false}
);
User.sync({ force: true });
return User
}
- 定义数据表的结构使用
app,model.define
- 由于在最开始引入了Sequelize故,可以使用app.model.define
在服务层(Service)获取表,并插入数据
const Service = require('egg').Service;
class UserService extends Service {
async getAll(){
const User = this.ctx.model.User;
await User.sync({ focrce: true });
await User.create({
name: 'marron'
});
return await this.ctx.model.User.findAll();
}
}
module.exports = UserService;
在控制层(Controller)调用服务层(Service)的功能
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index (){
const { ctx } = this;
ctx.body = await ctx.service.user.getAll();
}
}
- 注:
ctx.service.user.getAll()
对应目录下 /app/service/user
的getAll方法.即上面写到的async getAll()
在路由层(Router)将URL和方法对应
module.exports = app =>{
const { router, controller } = app;
router.get('/', controller.home.index);
}