1. npm i egg-sequelize mysql2 sequelize-cli
启动项目 npm run dev
2. 配置plugin.js启动插件
exports.sequelize = {
enable: true,
package: 'egg-sequelize',
};
配置config.default.js
config.sequelize = {
dialect: 'mysql',
database: 'baseName',
host: 'localhost',
port: '3306',
username: 'root',
password: 'root,
timezone: '+08:00' // 时区
}
3.配置 .sequelize(因为egg-sequlize的sequelize-cli有版本问题,所以自定义sequelize-cli)
const path = require('path');
module.exports = {
'config': path.resolve('config', 'config.json'),
'models-path': path.resolve('app', 'model'),
'seeders-path': path.resolve('app', 'seeder'),
'migrations-path': path.resolve('app', 'migration')
}
初始化
$ node_modules/.bin/sequelize init
生成3个文件夹 1个json文件
app/migration # 用来存放数据库迁移文件夹,当需要修改表结构的时候,可以控制这些代码来控制数据库表结构的版本回退
app/model # 用表中字段如何映射到js对象上的逻辑
app/seeder # 用来存放如何生成假数据的文件夹
config/config.json # 数据库配置
{
"development": {
"username": "root",
"password": "yourpass",
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": "yourpass",
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": "yourpass",
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
注意: 如果你的数据库还不存在,你可以调用 npx sequelize db:create
(--env=development 可添加环境)命令。 通过正确的访问,它将为您创建该数据库。
4 创建user 的 Migration
$ node_modules/.bin/sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string
这将发生以下事情
models
文件夹中创建了一个 user
模型文件migrations
文件夹中创建了一个名字像 XXXXXXXXXXXXXX-create-user.js
的迁移文件注意: Sequelize 将只使用模型文件,它是表描述。另一边,迁移文件是该模型的更改,或更具体的是说 CLI 所使用的表。 处理迁移,如提交或日志,以进行数据库的某些更改。
迁移到数据库
$ node_modules/.bin/sequelize db:migrate
撤销迁移
恢复最近的迁移
$ node_modules/.bin/sequelize db:migrate:undo
通过使用 db:migrate:undo:all
命令撤消所有迁移,可以恢复到初始状态。 您还可以通过将其名称传递到 --to
选项中来恢复到特定的迁移
$ node_modules/.bin/sequelize db:migrate:undo:all --to XXXXXXXXXXXXXX-create-posts.js
5. 创建假数据
这个命令将会在 seeders
文件夹中创建一个种子文件。文件名看起来像是 XXXXXXXXXXXXXX-demo-user.js
,它遵循相同的 up/down
语义,如迁移文件。
node_modules/.bin/sequelize seed:generate --name demo-user
现在编辑这个文件
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.bulkInsert('Users', [{
firstName: 'John',
lastName: 'Doe',
email: '[email protected]'
}], {});
},
down: (queryInterface, Sequelize) => {
return queryInterface.bulkDelete('Users', null, {});
}
};
插入数据库
$ node_modules/.bin/sequelize db:seed:all
这将执行该种子文件,您将有一个演示用户插入 User
表。
注意: seeders
执行不会存储在任何使用 SequelizeMeta
表的迁移的地方。 如果你想覆盖这个,请阅读 存储
部分
撤销
node_modules/.bin/sequelize db:seed:undo
撤销全部
node_modules/.bin/sequelize db:seed:undo:all