我目前正在構建一個Nodejs,Express,Sequelize(w PostgreSQL)應用程序,並遇到一些使用promise和事務和循環的問題。在Sequelize事務中使用循環和承諾
我想弄清楚如何在事務中使用for循環。我試圖循環遍歷成員列表,並在數據庫中爲每個成員創建一個新用戶。
我知道下面的代碼是錯誤的,但它顯示了我正在嘗試做什麼。
任何人都可以指向正確的方向嗎?
var members = req.body.members;
models.sequelize.transaction(function (t) {
for (var i = 0; i < members.length; i++) {
return models.User.create({'firstname':members[i], 'email':members[i], 'pending':true}, {transaction: t}).then(function(user) {
return user.addInvitations([group], {transaction: t}).then(function(){}).catch(function(err){return next(err);});
})
};
}).then(function (result) {
console.log("YAY");
}).catch(function (err) {
console.log("NO!!!");
return next(err);
});
感謝您的回答,但我得到一個錯誤告訴我,我需要將一個承諾鏈返回到事務。試圖在每個Promise.all之前添加「return」,但隨後我得到_「未處理的拒絕提交已在此事務中調用(fc7be023-1980-455e-9934-7816420daa2b),您不能再使用它」_ – ReturnToZero
是的,它缺少一個回報,並沒有任何東西被推到userPromises。 –
@BenjaminGruenbaum謝謝我昨天在移動設備上完成了這個任務,並且從來沒有機會回來檢查它。我會在更新後,我可以 – Datsik