2017-05-14 1017 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()时,也被捕获了。 –