安装
npm i sequelize sequelize-cli mysql2 --save
使用sequelize-li
查看命令 node_modules/.bin/sequelize
这个命令有些长,可用npx sequelize代替
初始化 npx sequelize init
命令执行之后会生成 consfig,migrations,models,seeders 文件夹
config
- 创建数据库
npx sequelize db:create
{
"development": {
"username": "root",
"password": null,
"database": "wy_development",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
},
"test": {
"username": "root",
"password": null,
"database": "wy_test",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
},
"production": {
"username": "root",
"password": null,
"database": "wy_production",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
}
}
- 创建出错
npx sequelize db:create
"development": {
"username": "root",
"password": "123456",
"database": "wy_development",
"host": "127.0.0.1",
"dialect": "mysql"
}
如果想建立别的环境的数据库,要先在项目目录的终端环境中 set NODE_ENV = '环境名'然后npx sequelize db:create
models/migrations
- 创建模型
npx sequelize model:create --name User --attributes username:STRINGmodels/migrations 文件夹内会有新的文件生成 - 迁移
npx sequelize db:migrate在数据库中生成User表 - 撤销
npx sequelize db:migrate:undo执行migrations里时间最近文件的down方法,默认删除对应的表。npx sequelize db:migrate:undo --name 20200507073255-create-user撤销指定的文件 name 在数据库的SequelizeMeta表中,该表默认生成 - 为表格新增字段
npx sequelize migration:generate --name userAdd建立一个新的迁移文件20200507084344-userAdd.js。 并在其中做如下配置。queryInterface 的方法看 这里
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.createTable('users', { id: Sequelize.INTEGER });
*/
return queryInterface.addColumn(
'Users', // 表名
'age', { // 新增字段
type: Sequelize.TINYINT,
allowNull: false,
defaultValue: 0
}
)
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
return queryInterface.removeColumn('Users', 'age');
}
};
之后 npx sequelize db:migrate文件会运行20200507084344-userAdd.js,中的up方法,在User表中新增字段成功。
queryInterface的方法是api中的方法
seed
主要方便数据的操作
- 创建seed文件
npx sequelize seed:generate --name makeUser在seeders文件夹下生成20200507092428-makeUser.js文件,并对其进行设置
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.bulkInsert('People', [{
name: 'John Doe',
isBetaMember: false
}], {});
*/
return queryInterface.bulkInsert('User', [{
name: '张三',
age: 80
}], {});
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.bulkDelete('People', null, {});
*/
return queryInterface.bulkDelete('User', null, {});
}
};
npx sequelize db:seed:all执行所有的种子文件, 数据插入成功,但是seed文件是默认是没有历史记录的,所以要手动更改配置,在config/consfig.json文件中做如下配。
配置有json和sequelize2种方式, json把记录存在项目中,sequelize把记录存在数据库的表中。
详细看 这里
// "seederStorage": "json",
// "seederStoragePath": "sequelizeData.json"
"development": {
"username": "root",
"password": "123456",
"database": "wy_development",
"host": "127.0.0.1",
"dialect": "mysql",
"seederStorage": "sequelize",
"seederStorageTableName": "sequelize_data"
},