npm install --save egg-sequelize
npm install --save mysql2
在Egg里下载并配置好sequelize
config.sequelize = {
dialect: 'mysql',
database: 'lalala',
host: 'localhost',
port: 3306,
username: 'root',
password: '123456',
timezone: '+08:00',
}
这里的信息要和数据库对应
sequelize: {
enable: true,
package: 'egg-sequelize'
},
在app/model目录创建clazz.js文件(数据模型)对应数据库中的clazz表
module.exports = app => {
const { STRING } = app.Sequelize;
//默认情况下sequelize将所有传递的模型名称转换为复数
const Clazz = app.model.define('clazz', {
name: STRING,
//id自动生成
})
//创建数据表
return Clazz;
}
在项目根目录下创建app.js,执行创建表的操作初始化数据库
module.exports = app => {
app.beforeStart(async function() {
await app.model.sync({ force: true });
//每次重启服务器都会删除数据
await app.model.sync({});
//sync方法会根据模型创建表
})
}
表已经有了,进行数据的增删改查
先在路由设置
router.resources('mysql', '/mysql', controller.mysql);
再在controller里实现sequelize函数对数据进行操作
this.app.model.Clazz.findAll();//查询数据
this.app.model.Clazz.findAll({where:{id:1}})//通过where设置查询条件
this.app.model.Clazz.create({name:"xx"})//添加数据
this.app.model.Clazz.update({name:"xx"},{where:{id:1}})//通过条件修改数据
this.app.model.Clazz.destroy({where:{id:1}})//通过条件删除数据
//controller里的代码
'use strict';
const Controller = require('egg').Controller;
class mysqlController extends Controller {
async index() {
let clazzlist = await this.app.model.Clazz.findAll();
this.ctx.body = clazzlist;
}
async create() {
let name = this.ctx.request.body.name;
await this.app.model.Clazz.create({
name: name
})
this.ctx.body = "添加成功";
}
async destroy() {
let id = this.ctx.params.id;
await this.app.model.Clazz.destroy({ where: { id: id } });
}
async update() {
let id = this.ctx.params.id; //要修改的id
let name = this.ctx.request.body.nam;
await this.app.model.Clazz.update({ name: name }, {
where: { id: id }
})
this.ctx.body = "修改成功"
}
}
module.exports = mysqlController;
实现学生和班级的关系用外键
定义一个student.js的model
module.exports = app => {
const { STRING, DOUBLE } = app.Sequelize;
//默认情况下sequelize将所有传递的模型名称转换为复数
const Student = app.model.define('student', {
name: STRING,
achievement: DOUBLE
//id自动生成
})
//创建数据表
Student.associate = function() {
app.model.Student.belongsTo(app.model.Clazz, {
foreignKey: 'clazz_id',
as: 'clazz' //起别名
})
}
return Student;
}
现在学生的model里就有id,name,clazz_id了
之后只需要再创建student.js其他和clazz.js是大同小异的