假设我有以下简单模型:
var Foo = sequelize.define('Foo', {
bar: Sequelize.STRING,
});
而数据库中的表Foos
有一条记录:
id bar
--- ---
1 abc
为了更新此记录,我可以执行以下操作:
Foo.findById(1).then(function(foo) {
foo.bar = 'xyz';
foo.save();
});
现在我找到了另一种更新记录的方法,而无需从数据库中找到它:
var foo = Foo.build({ id: 1, bar: 'xyz' });
foo.isNewRecord = false; // makes save use UPDATE instead of INSERT INTO
foo.save();
这非常适合我的用例,但我想知道我是否在 sequelize 中破坏了任何东西。
最佳答案
build
函数中有一个参数,它接受一个名为options
的对象。 options
有一个默认为 true 的属性 isNewRecord
。如果您将此设置为 false 并使用 update()
,它将在您设置主键后更新现有记录。
let instance = await db.Model.build({}, {isNewRecord: false});
const result = await instance.update({
id: instanceId,
column : newValue
});
关于node.js - Sequelize : using build to update a record,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286833/