使用 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 更新多条记录?的主要内容,如果未能解决你的问题,请参考以下文章

nodejs:sequelize数据库查询的Op方法

如何在使用 Sequelize 更改列或添加新列时更新迁移文件

创建或更新 Sequelize

sequelize 学习之路

nodejs Sequelize 简单查询语句和 mysql常用的几个查询命令

GraphQL 嵌套突变 + Sequelize