一个迁移文件中有多个迁移语句
我试图在一个迁移文件中执行多个迁移语句,以便一次性更改同一个表的多个列。
我想知道我是否以写作的方式去做,还是有更好更合适的方法去做:
迁移代码
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。 没有提到一个done
callback。
为此,请尝试以下操作:
return Promise.all([ queryInterface.changeColumn..., queryInterface.changeColumn... ]);