Skip to main content

cli创建模型(Model)、迁移(Migration)与种子(Seeders)

info

本文参考连接:长乐未央

本文参考了上面的连接,记录一些命令。记不住,打脑壳得很!

创建模型与迁移(Model And Migrations)

举个栗子

sequelize model:generate --name Article --attributes title:string,content:text

sequelize model:generate 就是我们用到来创建 modelMigration 的cli,--name 就是表名,--attributes 就是表的字段。因为我们上一篇已经修改了 /models/index.js 添加了 await sequelize.sync({ alter: true }) 所以当我们编辑 model 时,数据库中表的字段会自动更新。这里不用强迫自己把所有的字段名都想好然后在创建,不然命令行也很长,看着头又疼了。

运行完之后可以看到我们的 models 下新增了一个 Articlemodel 以及 migrations 文件夹下也新增了迁移文件

tip

当我们需要修改表字段的时候,modelmigration 都需要更改,不然数据库的表自动更新不会成功,并且会有一些莫名奇妙的报错,把人搞懵。 这是时候可以看一下数据中的表有没有自动更新或者创建了,删除的话,暂时不知道咋删,需要在数据库面板中执行sql或手动删除

创建种子(Seeders)

种子其实就是往数据库里加一些数据啦,前端的理解就是用于填充测试数据。这里需要用到的是种子文件。

sequelize seed:generate --name article

seed:generate 就是创建种子的cli,执行完成后,会看到根目录下的 /seeders 文件夹下会新增一个当前时间加上 --name 参数值的这么一个类似 20240712122503-article.js 文件

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 是将所有的种子文件都运行,后面跟上文件名就可以只执行一个种子了,不需要加文件后缀

之后查看表里的数据,当当当当~ 家人们,成功了😄