Sequelize Transaction Bulk Update后跟批量创建

时间:2017-05-14 18:18:18

标签: javascript mysql node.js sequelize.js

我正在使用Sequelize交易,并希望知道如何在继续批量创建之前进行批量更新。

我目前的代码是这样的:

return sequelize.transaction(function(t){
  return sequelize.Promise.each(arrToUpdate, function(itemToUpdate){
    model.update(itemToUpdate, { transaction: t })
  }); 
  //How to do a sequential bulk create after the bulk update is successful in sequelize
  //transaction?
  //Bulk Create code would be return model.bulkCreate(itemsArray, { transaction: t })
});

1 个答案:

答案 0 :(得分:2)

我相信你只是在承诺与then联系之后?第一行应该返回一个承诺 - 所以只需在结果上调用then

return sequelize.transaction(function(t){
  return sequelize.Promise.each(arrToUpdate, function(itemToUpdate){
    model.update(itemToUpdate, { transaction: t })
  }).then((updateResult) => {
    return model.bulkCreate(itemsArray, { transaction: t })
  }, (err) => {
    // if update throws an error, handle it here.
  }); 
});

注意:现在你的函数将返回一个promise,所以无论你的函数调用什么,都必须使用then来处理结果。