Невозможно понять, как ждать, пока цикл forEach будет повторяться полностью, и использовать этот результат. - PullRequest
0 голосов
/ 25 ноября 2018

Я новичок в облачных функциях (узел js с машинописью).Я использую его для получения данных из базы данных Firebase (как показано ниже).Но не в состоянии выяснить, как ждать, пока цикл forEach будет повторяться полностью, и использовать этот результат.

  const reference = admin.database().ref('/books')
  var path_key:string
  var total_count:number = 0
  reference .forEach(function (snapshot) {
        path_key= snapshot(key).val()
         ref_users_advance_bookings.child(path_key) 
         .once('value').then((snapshot2)=>{

         if(condidtion met){
          return response.send("failed")
          }
          else{
           total_count++ 
           }
         )}

     return true 
    }) 
     // i want to use total_count value here
     return response.send("count :"+total_count) // but every time I gets 0, as it get executed before forEach has ended
   )}

1 Ответ

0 голосов
/ 25 ноября 2018

Я предполагаю, что вы пытаетесь дождаться загрузки нескольких элементов из базы данных.Для этого вы захотите использовать Promise.all(), например:

var promises = [];
ref.forEach(function (snapshot) {
    path_key= snapshot(key).val()
    promises.push(ref_users_advance_bookings.child(path_key).once('value'));
});

Promise.all(promises).then(function(snapshots) {
    var failed = false;
    snapshot.forEach(function(snapshot2) {
        if(condition met){
            failed = true;
        }
        else {
            total_count++;
        }
    )}
    if (failed) {
        return response.status(500).send("ERROR");
    }
    else {
        return response.send("count :"+total_count);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...