Javascript l oop не работает должным образом с Firebase - PullRequest
0 голосов
/ 04 мая 2020

У меня есть этот код

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

1009 * Почему я получу один и тот же "partner.uid" четыре раза вместо того, чтобы получать все остальные uid?

Ожидаемый результат будет:

-8.5 uz0Wfx5SZwRWdcjihBSPr0xo0wH2
-38,5 pl0Wunlv3RWdcjihwHH0P0O0O000O0O000O000O000O000O000O000O000O000O0O000O000O000O00O00O000O00O000O0O000O00O00000O0O2O0O2O0022 46.225 gw0Wff5S3wRWdcjihBSPr0BO0wH2
-181.225 zd0Wfx5SZwRpOcjihBSPr3dBO0wH2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...