如何修改续集迁移

How to modify sequelize migrations

当我更改我的模型和迁移文件并 运行 sequelize db:migrate:undo 然后 sequelize db:migrate 时,不会对数据库进行更改 table.

相反,更改会影响最后一个迁移文件/模型文件。

这个问题与这里的这个问题类似:

但无论如何,迁移只是一组使用 queryInterface 方法的指令,因此例如,当您使用 cli 生成迁移时使用的默认方法是 (createTable) 方法。
如果您想以任何方式更改 table,您需要使用另一种方法,例如(renameColumn: to rename a column, changeColumn:更改列数据类型,..等)

例如,如果我想将一个名为 name 的列重命名为 firstName(已迁移)Users table,我将创建一个新的迁移文件修改它,它看起来像这样:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.renameColumn('Users', 'name', 'firstName', {
      type: Sequelize.STRING,
    })
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.renameColumn('Users', 'firstName', 'name', {
      type: Sequelize.STRING,
    })
  }
};

这是在 添加新列 (lastName) 到相同 table Users:

的示例中
'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.addColumn('Users', 'lastName', {
      type: Sequelize.STRING
    })
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.removeColumn("Users", "lastName")
  }
};