[英]Promise inside forEach loop within promise, bad firebase database design?
使用Firebase內置購物車,當用戶支付了功能觸發器后,我從購物車中獲取了所有商品,然后創建並排列了商品ID(標識)的數組,然后我想搜索每個商品的商店ID通知他們。
商店ID是產品節點中的子項。 產品介紹 - > {PID} - > SID
這是我拿到PID后的方法
.then(snap => {
return pids.forEach( pids => {
productIdRef = root.child(`/products/${pids}`);
//Here I should create a promise to get the Stores Ids:
// productIdRef.once("value")....
});
這就是嵌套承諾,據我所知是不好的。
那么,有什么我可以做的避免嵌套承諾的方法嗎?還是由於Firebase數據庫設計不佳而從一開始就注定了這一點?
更新:完整功能:
var itemsRef = NOTIFICATION_SNAPSHOT.adminRef.parent.child('items');
var pids = [];
return itemsRef.once('value').then(snapshot => {
return snapshot.forEach((childSnapshot) => {
pids.push(childSnapshot.key);
});
}).then(snap => {
return pids.forEach(pids => {
productIdRef= root.child(`/products/${pids}`).once('value');
});
}).catch(error => {
// Something went wrong.
console.error(error);
});
我不確定嵌套是什么意思
也許使用Promise.all
如下所示:
.then(snap => {
return Promise.all(pids.map(pid => {
return root.child(`/products/${pid}`);
}));
}).then((storeIds) => {
// result of root.child()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.