0

目前我已经开始在我使用SEQUELIZE ORM的 NODE JS 上工作。Sequelize 确实支持使用sequelize-cli进行迁移,但文档并未解释有关如何使用迁移的所有细节。我想知道是否可以使用 Sequelize CLI 进行以下操作。考虑到 PROD 部署,以下几点很重要

  1. 通过查看模型自动生成迁移文件
  2. 根据对模型所做的新更改自动生成迁移文件
  3. 生成迁移的 SQL 脚本,以便我们可以在 PROD 上运行它
  4. 特定于环境的迁移(Dev、Stage、Prod

我已经阅读了文档,但它没有解释上述任何一点。请帮我解决这个问题,我

4

1 回答 1

3

使用迁移的想法是它们是您的数据库之王。它们是唯一改变您的数据库架构的东西,而您应该更改数据库架构的唯一方法是简单地运行迁移。

在回答您的问题时:

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')
  }
};
于 2016-12-14T22:01:24.917 回答