Express 如何修改sequelize迁移

Express 如何修改sequelize迁移,express,sequelize.js,sequelize-cli,Express,Sequelize.js,Sequelize Cli,当我更改模型和迁移文件并运行sequelize db:migrate:undo,然后再运行sequelize db:migrate时,不会对数据库表进行更改 相反,更改会影响最后一个迁移文件/模型文件。此问题与此处的问题类似: 但无论如何,迁移只是使用方法的一组指令,因此,例如,使用cli生成迁移时使用的默认方法是(createTable)方法。 如果要以任何方式更改表,则需要使用其他方法,例如(:重命名列,:更改列数据类型,…等等) 例如,如果我想在一个已经存在的(已迁移的)用户表中将名为na

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


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

此问题与此处的问题类似:

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

例如,如果我想在一个已经存在的(已迁移的)
用户
表中将名为
name
的列重命名为
firstName
,我将创建一个新的迁移文件来修改它,如下所示:

'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
添加一个新列(lastName)的示例:

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

我想你问的是
如何撤消和重新编译特定的迁移
,对吗?是的。。。我想是的。很好,只要确保我正确理解了这个问题,我有一个名为hotels的模型/迁移文件,我运行了sequelize db:migrate:undo--name 20181125003411-create-hotel.js,这是我返回的错误错误错误:无法删除表“hotels”因为其他对象依赖于itI,我不想删除该表,我只想修改该表,它已经部署到heroku,但我现在运行这些命令来更改部署到heroku。我知道,在这种情况下,您需要使用其中一个函数来做您真正想要的事情(例如renameColumn、changeColumn等等)但是你应该创建一个新的迁移来进行修改