使用迁移的想法是它们是您的数据库之王。它们是唯一会更改数据库架构的东西,而更改数据库架构的唯一方法就是简单地运行迁移。
回答您的问题:
1.通过查看模型自动生成迁移文件
不要。手动生成迁移。如果要更改特定表的列,请先生成迁移,然后再修改相应的模型。迁移是数据库之王。模特排在第二位。
2。根据对模型所做的新更改自动生成迁移文件
不要。同上。
3.生成迁移的 SQL 脚本,以便我们可以在 PROD 上运行它
不要。您应该能够直接在生产环境中运行迁移,连接到生产数据库,就像在开发环境中运行它们一样,使用sequelize db:migrate。每次将新代码推送到生产环境时,您的部署脚本都应自动在生产数据库上运行 sequelize db:migrate。
4.特定于环境的迁移(Dev、Stage、Prod)
绝对不会。每个迁移都应该在每个环境中运行。无论环境如何,您的数据库都应具有相同的架构。
更新:这是一个示例 migartion(向上和向下运行)以添加新的布尔列:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn(
'my_table',
'my_new_column',
{
type: Sequelize.BOOLEAN,
}
)
},
down: function (queryInterface, Sequelize) {
return queryInterface.removeColumn('my_table', 'my_new_column')
}
};