2017-05-14 34 views
0

Sequelizeトランザクションを使用しており、一括作成を行う前に一括更新を行う方法を知りたいと思います。私はあなただけthenと連鎖する約束後にしていると信じていSequelize Transaction Bulk Update続いてBulk Create

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を呼び出す:

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

ありがとう、私はそれを考えなかった!あまりにもループ内のreturn model.update()に巻き込まれていた。 –