Sequelize:使用build来更新记录

时间:2016-12-22 15:43:04

标签: 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 = Foo.build({ id: 1, bar: 'xyz' });
foo.isNewRecord = false;  // makes save use UPDATE instead of INSERT INTO
foo.save();

这对我的用例来说是完美的,但我想知道我是否在破坏时破坏了任何东西。

1 个答案:

答案 0 :(得分:1)

build函数中有一个参数,该参数采用名为options的对象。 options的属性isNewRecord默认为true。如果将其设置为false并使用update(),它将在设置主键后更新现有记录。

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

source