sequelize egg-sequelize-auto整个过程还是有一些坑 包括兼容性问题 依赖安装问题 需要注意 缺少一个条件 包跑不起来 或使用体验很差
1. 全局安装插件
pnpm install -g sequelize-cli sequelize mysql2 egg-sequelize-auto
2. 执行命令创建 migrate迁移文件 以及 model文件
npx sequelize model:generate --name Activation --attributes activationCode:string,machineCode:string,activationVersion:string,email:string
2.1执行这个命令的前提是在根目录下创建.sequelizerc文件,告诉sequelize 各个命令执行以及生成的存放目录
'use strict';const path = require('path');module.exports = {config: path.join(__dirname, 'config/config.json'),'migrations-path': path.join(__dirname, 'database/migrations'),'seeders-path': path.join(__dirname, 'database/seeders'),'models-path': path.join(__dirname, 'app/model'),
};
注意 : 生成的model 很可能用不了 因为兼容的问题
3.给自动生成的migrate文件添加注释
'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {async up(queryInterface, Sequelize) {await queryInterface.createTable('Activations', {id: {allowNull: false,autoIncrement: true,primaryKey: true,type: Sequelize.INTEGER},activationCode: {type: Sequelize.STRING,comment: '激活码'},machineCode: {type: Sequelize.STRING,comment: '机器码'},activationVersion: {type: Sequelize.STRING,comment: '激活版本'},email: {type: Sequelize.STRING,comment: '邮箱'},createdAt: {allowNull: false,type: Sequelize.DATE},updatedAt: {allowNull: false,type: Sequelize.DATE}});},async down(queryInterface, Sequelize) {await queryInterface.dropTable('Activations');}
};
4. 运行 Sequelize 数据库迁移的命令
这个命令会根据migrate迁移文件 , 在mysql中生成对应的表
"db": "npx sequelize db:migrate"
这个时候运行eggjs项目 ,跑不起来可能是因为第二的兼容问题 ,可以删除model下的文件 执行第五步
5. 从现有的数据库表结构生成对应的 Sequelize model模型文件
"model": "egg-sequelize-auto -o ./app/model -d sqlapplestven -h mysql.sqlpub.com -u applestven -p 3306 -x 7At1P1IH9eV",