Jay*_*ayR 3 javascript node.js sequelize.js
我已经完成了这一点.在更改状态列属性后,我遇到了更新行的问题.
up: function(queryInterface, Sequelize) {
return queryInterface.changeColumn('projects', 'status', {
type: Sequelize.ENUM('processing', 'unassigned', 'ongoing', 'completed'),
allowNull: false,
defaultValue: 'unassigned'
}).then(function() {
return Project.update({
status: 'unassigned'
}, {
where: {
status: 'processing'
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
Project.update()似乎在任何情况下都不起作用,但改变列的属性是有效的.
伙计们好吗?我不知何故是续集中的新手,任何想法都会有很大的帮助.谢谢.
取决于您执行迁移的方式(sequelize-cli通过umzug 通过或以编程方式).有一种不同的方法可以通过ORM公开表.
在您的情况下,您已queryInterface作为参数传递给您的函数.因此,您可以通过附加sequelize属性执行"原始查询" .
up: function(queryInterface, Sequelize) {
return queryInterface.changeColumn('projects', 'status', {
type: Sequelize.ENUM('processing', 'unassigned', 'ongoing', 'completed'),
allowNull: false,
defaultValue: 'unassigned'
}).then(function() {
return queryInterface.sequelize
.query("UPDATE projects SET status='unassigned' WHERE status='processing'");
});
}
Run Code Online (Sandbox Code Playgroud)
通过执行此操作,您将对数据库进行原始查询.
您可以查看此要点,了解有关在迁移中使用ORM的高级方法的更多详细信息.
我喜欢以编程方式使用umzug,它执行迁移并提供数据库的初始化模型.如果您正确配置它,您将受益于暴露的模型(例如sequelize.model('project').update())并具有更好看的代码.