簡體   English   中英

在promise中保證forEach循環內,firebase數據庫設計不好?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM