如何修改序列迁移

时间:2018-12-31 00:30:40

标签: express sequelize.js sequelize-cli

当我更改模型和迁移文件并运行sequelize db:migrate:undo然后再序列化db:migrate时,不会在数据库表上进行更改。

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

1 个答案:

答案 0 :(得分:-1)

此问题与此处的问题类似:How to add column in sequelize existing model

但是无论如何,迁移只是使用queryInterface方法的一组指令,因此,例如,使用cli生成迁移时使用的默认方法是(createTable)方法。
如果要以任何方式更改表,则需要使用另一种方法,例如(renameColumn:重命名列,changeColumn:更改列数据类型,.. etc)

例如,如果我想将一个已存在(已迁移)name表上名为firstName的列重命名为Users,我将创建一个新的迁移文件来对其进行修改,看起来像这样:

'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,
    })
  }
};

这是在向同一表Users中添加新列(姓)的示例:

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