node.js - Sequelize : using build to update a record

标签 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();

这非常适合我的用例,但我想知道我是否在 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
});

source

关于node.js - Sequelize : using build to update a record,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286833/

相关文章:

javascript - AJAX 到 PHP 不使用 NODEJS 将数据发送到数据库

node.js - VSCode 错误地将 Sequelize findOne 和 findAll 的返回类型推断为 any

transactions - 在事务中 Sequelize bulkCreate

sql - 使用 NodeJS 进行 Sequelize 无法连接有限制的表

node.js - iis作为反向代理: configure it to forward current windows loged user as a custom header

node.js - Nodejs mocha单元测试sqlite3回调未调用插入未执行

node.js - Nodejs : Connect and "writeHead" in first connect-callback

node.js - 使用 Sequelize 保存图像

node.js - 如何在 Sequelize 中使用 Case Condition?

javascript - sequelize 缓存常见请求