cli创建模型(Model)、迁移(Migration)与种子(Seeders)
本文参考连接:长乐未央
本文参考了上面的连接,记录一些命令。记不住,打脑壳得很!
创建模型与迁移(Model And Migrations)
举个栗子
sequelize model:generate --name Article --attributes title:string,content:text
sequelize model:generate
就是我们用到来创建model
和Migration
的cli,--name
就是表名,--attributes
就是表的字段。因为我们上一篇已经修改了/models/index.js
添加了await sequelize.sync({ alter: true })
所以当我们编辑model
时,数据库中表的字段会自动更新。这里不用强迫自己把所有的字段名都想好然后在创建,不然命令行也很长,看着头又疼了。
运行完之后可以看到我们的 models
下新增了一个 Article
的 model
以及 migrations
文件夹下也新增了迁移文件
当我们需要修改表字段的时候,model
和 migration
都需要更改,不然数据库的表自动更新不会成功,并且会有一些莫名奇妙的报错,把人搞懵。
这是时候可以看一下数据中的表有没有自动更新或者创建了,删除的话,暂时不知道咋删,需要在数据库面板中执行sql
或手动删除
创建种子(Seeders)
种子其实就是往数据库里加一些数据啦,前端的理解就是用于填充测试数据。这里需要用到的是种子文件。
sequelize seed:generate --name article
seed:generate
就是创建种子的cli,执行完成后,会看到根目录下的/seeders
文件夹下会新增一个当前时间加上--name
参数值的这么一个类似20240712122503-article.js
文件
'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up (queryInterface, Sequelize) {
/**
* Add seed commands here.
*
* Example:
* await queryInterface.bulkInsert('People', [{
* name: 'John Doe',
* isBetaMember: false
* }], {});
*/
},
async down (queryInterface, Sequelize) {
/**
* Add commands to revert seed here.
*
* Example:
* await queryInterface.bulkDelete('People', null, {});
*/
}
};
这里我直接贴出官方的使用及配置方法: 迁移
配置完成后运行
sequelize db:seed:all
or
sequelize db:seed:20240712122503-article
sequelize db:seed:all
是将所有的种子文件都运行,后面跟上文件名就可以只执行一个种子了, 不需要加文件后缀
之后查看表里的数据,当当当当~ 家人们,成功了😄