2017-05-14 1018 views
0

我正在使用Sequelize事務,並想知道如何在按順序執行批量創建之前執行批量更新。Sequelize Transaction批量更新,然後是批量創建

我當前的代碼是這樣的:

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

回答

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. 
    }); 
}); 

注:現在你的函數會返回一個承諾,所以無論調用你的函數將不得不使用then來得到結果的手柄。

+0

謝謝,我沒有想到!在循環內部返回model.update()時,也被捕獲了。 –