2014-06-28 52 views
1

使用node.js(v0.10.12)和sequelize(2.0.0-dev9),我想要更新現有數據庫表中的屬性。從另一個SO discussion我一次只能更新一條記錄。我把這個調用封裝在for循環中,但是在整個for循環中更新了相同的記錄。使用sequelize和nodejs更新多個記錄?

有人可以幫我修改這段代碼來更新符合搜索要求的所有記錄嗎?下面是我的代碼:

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() {}); 
               } 
             }) 

回答

5

根據你需要做一個BulkCreate的docs:(未測試)

global.db.Task.update(
    {Desc: 'New Upate'},  //set attribute 
    {cd: 'match', Desc: null} //where criteria 
).success(function(affectedRows) { ... }); 
+0

喂丹尼爾,在你的指導是正確的。但是,您的代碼在最後有一個額外的})。如果你能做出這種修正,我將能夠正確地標記你的答案。這些文檔提供了在每次使用bulkCreate和update方法進行調用期間批量添加和更新多個實例的示例。從測試中,我進一步減少了代碼,因此只有批量更新。從您在Sequelize文檔中提供的示例中刪除Model.bulkCreate方法。 – JnL

+0

啊我看到沒有完整地閱讀文檔。剛剛更新了我的答案。謝謝。 – Daniel

+0

隨着您的更新評論,我想出了條件AND語句。謝謝你的更新。 – JnL