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支持此功能