Node.js Sequelize:使用构建更新记录

Node.js Sequelize:使用构建更新记录,node.js,sequelize.js,Node.js,Sequelize.js,假设我有以下简单的模型: 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 = 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
的对象<代码>选项有一个默认为true的属性
isNewRecord
。如果您将此设置为false并使用
update()
它将在设置主键后更新现有记录

let instance = await db.Model.build({}, {isNewRecord: false});
const result = await instance.update({
    id: instanceId,
    column : newValue
});

因此,sequelize支持手动更改
isNewRecord
值。“isNewRecord”是“build()”参数的属性。你没有改变任何事情。是,sequelize支持此功能