使用 sequelize 和 nodejs 更新多条记录?
Posted
技术标签:
【中文标题】使用 sequelize 和 nodejs 更新多条记录?【英文标题】:Updating multiple records using sequelize and nodejs? 【发布时间】:2014-08-19 17:28:02 【问题描述】:使用 node.js (v0.10.12) 和 sequelize (2.0.0-dev9),我想更新现有数据库表中的属性。从花药SO discussion 我一次只能更新一条记录。我将调用封装在一个 for 循环中,但在整个 for 循环中更新了相同的记录。
有人可以帮我修改此代码以更新所有符合搜索要求的记录吗?以下是我的代码:
global.db.Task.find( where: "Cd": "match" && "Desc": null
).on('success', function(task)
if (task) // if the record exists in the db
task.updateAttributes(
Desc: "New Upate"
).success(function() );
)
【问题讨论】:
【参考方案1】:根据docs你需要做一个BulkCreate:(未测试)
global.db.Task.update(
Desc: 'New Upate', //set attribute
cd: 'match', Desc: null //where criteria
).success(function(affectedRows) ... );
【讨论】:
嘿丹尼尔,你的指导是正确的。但是,您的代码最后有一个额外的 )。如果您可以进行此更正,我将能够将您的答案标记为正确。文档提供了一个在每次调用期间使用 bulkCreate 和 update 方法批量添加和更新多个实例的示例。通过测试,我进一步减少了代码,因此只有批量更新。只需从您在 Sequelize 文档中提供的示例中删除 Model.bulkCreate 方法即可。 啊,我看到没有完整地阅读文档。刚刚更新了我的答案。谢谢。 通过您更新的评论,我找到了条件 AND 语句。谢谢你的更新。 嘿丹尼尔。我刚刚注意到您的更新调用中的“,”。 set 属性和 where 条件的 末尾没有逗号。您可以在您提供的 sequelize 文档的链接中看到这一点。请更新。以上是关于使用 sequelize 和 nodejs 更新多条记录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 Sequelize 更改列或添加新列时更新迁移文件