【问题标题】:Updating multiple records using sequelize and nodejs?使用 sequelize 和 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() {});
                                              }
                                      })

【问题讨论】:

    标签: mysql node.js postgresql express sequelize.js


    【解决方案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 文档的链接中看到这一点。请更新。
    猜你喜欢
    • 2018-06-02
    • 2021-06-25
    • 1970-01-01
    • 2022-11-28
    • 2022-01-23
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多