首页 > 解决方案 > Javascript循环不能按预期与firebase一起工作

问题描述

我有这个代码

function updateMonthly(puid) {
  firebase.database().ref('partner').child(puid).once('value').then(async(snapshot) => {
    partner = snapshot.val()
      if(partner.hasOwnProperty('users')){
        if(partner.users.hasOwnProperty('first')){
            monthly = 0
            first = partner.users.first;
            Promise.all(
                await first.map((key) => {
                    return firebase.database().ref('user').child(key).once('value').then(u => {
                        u = u.val()
                        if(u.pack.name != 'no pack'){
                            monthly = monthly + 10
                        }
                    })
                })
            ).then(() => {console.log(monthly+" "+partner.uid)}).catch(error => console.log(error)) //output
        }
    }
  });
}

function generatePayments() {
  firebase.database().ref().child('partner').once('value').then(snapshot => {
    snapshot.forEach((child) => {
        partner = child.val();
        updateMonthly(partner.uid);
    })
  }).catch(error => console.log(error)) 
}

输出为
-8.5 uz0Wfx5SZwRWdcjihBSPr0BO0wH2
-38.5 uz0Wfx5SZwRWdcjihBSPr0BO0wH2
-46.225 uz0Wfx5SZwRWdcjihBSPr0BO0wH2
-181.225 uz0Wfx5SZwRWdcjihBSPr0BO0wH2

为什么我四次获得相同的“partner.uid”而不是获得所有其他的 uid?

预期输出为:

-8.5 uz0Wfx5SZwRWdcjihBSPr0xo0wH2
-38.5 pl0Wunlv3RWdcjihBSPr0Op0wH2
-46.225 gw0Wff5S3wRWdcjihBSPr0BO0wH2
-181.225 zd0Wfx5SZwRpOcjihBSPr3dBO0wH2

标签: javascriptfirebasedictionarypromise

解决方案


推荐阅读