一个迁移文件中有多个迁移语句

我试图在一个迁移文件中执行多个迁移语句,以便一次性更改同一个表的多个列。

我想知道我是否以写作的方式去做,还是有更好更合适的方法去做:

迁移代码

module.exports = { up: function(queryInterface, Sequelize, done) { queryInterface.changeColumn('users', 'name', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'address', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'city', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'state', { type: Sequelize.STRING, allowNull: false, require: true, defaultValue: "ncjnbcb" }); done(); }); }); }); } }; 

但是我面对一个错误说:

TypeError:undefined不是一个函数

由于找不到任何方式来debugging迁移错误,如果有人帮我解决这个问题,或者如果可能的话,告诉我们如何才能找出迁移中的错误。

你的TypeError可能是因为你没有返回任何东西。 文档说每个迁移函数都应该返回一个Promise。 没有提到一个donecallback。

为此,请尝试以下操作:

 return Promise.all([ queryInterface.changeColumn..., queryInterface.changeColumn... ]);