forEach с запросами Firebase одного документа на стороне клиента? - PullRequest
0 голосов
/ 01 ноября 2019

У меня разные идентификаторы документа для каждого цикла, и когда я выполняю запрос внутри цикла, запрос forEach работает, но не помещает объект obj в массив

  function getAllDonations() {
        donations = [];
        const user_session_data = sessionStorage.getItem('LoginInfo');
        const parse_user_login_data = JSON.parse(user_session_data);
        let TABLE_NAME = "donation_favourites";
        let get_requests_qry = App.db.collection(TABLE_NAME);
        get_requests_qry.where('user_id', '==', parse_user_login_data.user_id).get().then(snapshot => {
            let changes = snapshot.docChanges();
            changes.forEach(change => {
                var one_item = change.doc.data();
                let TABLE_NAME1 = "donation_requests";
                let get_requests_qry1 = App.db.collection(TABLE_NAME1);      
                   get_requests_qry1.doc(one_item.donationId).get().then(snapshot => {
                    donations.push(snapshot.data())                       
                });          
            }); 
            console.log("checking the data",donations.length)  //this length is not coming         
        });
    }

1 Ответ

2 голосов
/ 06 ноября 2019

Если вы хотите читать файлы, используемые forloop, но это не рекомендуется для большого цикла для маленького цикла, то все в порядке, если вы хотите читать файлы параллельным использованием forEach

Вы также можете сделать это с помощью async и await вместо forLoop

await Promise.all(changes.map(async (change) => {
   var one_item = change.doc.data()
   let TABLE_NAME1 = "donation_requests";
   let get_requests_qry1 = App.db.collection(TABLE_NAME1);
   var snapshot1 = await get_requests_qry1.doc(one_item.donationId).get()
   donations.push(snapshot1.data())
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...