使用SequelizeJS和CLI迁移

时间:2016-12-13 12:55:52

标签: node.js sequelize.js sequelize-cli

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

  1. 通过查看模型
  2. 自动生成迁移文件
  3. 根据对模型的新更改自动生成迁移文件
  4. 生成迁移的SQL脚本,以便我们可以在PROD上运行
  5. 特定于环境的迁移(Dev,Stage,Prod
  6. 我已经阅读了文档,但它没有探讨上述任何一点。请帮帮我,我

1 个答案:

答案 0 :(得分:2)

使用迁移的想法是它们是您数据库的王者。它们是唯一可以改变数据库模式的方法,只需要更改数据库模式就是运行迁移。

回答你的问题:

<强> 1。通过查看模型

自动生成迁移文件

唐&#39;吨。手动生成迁移。如果您要更改特定表的列,请先生成迁移,然后再修改相应的模型。迁移是数据库的王者。模特排在第二位。

<强> 2。自动生成基于对模型进行的新更改的迁移文件

唐&#39;吨。与上述相同。

第3。生成迁移的SQL脚本,以便我们可以在PROD上运行

唐&#39;吨。您应该能够直接在生产环境中运行迁移,连接到生产数据库,就像您使用sequelize db:migrate在dev中运行它们一样。每次将新代码推送到生产环境时,您的部署脚本都应自动在生产数据库上运行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')
  }
};