Облачные функции Firebase ожидают получения асинхронных данных из базы данных - PullRequest
0 голосов
/ 12 мая 2018

Я хочу проверить, существуют ли данные в БД Firebase Realtime.Проблема в том, что B всегда выполняется, так как при выполнении if(snapshot.exists()) у него нет истинного значения, потому что это асинхронный вызов, поэтому у него нет значения.

  ref.child("Users").child(theDataToAdd).once('value', function(snapshot) {
      if(snapshot.exists()) {
           //A
      }else{
          //B
      }

  });

Как мне достичьподождать, пока оператор if не получит значение true / false, а затем продолжить выполнение кода?

1 Ответ

0 голосов
/ 12 мая 2018

Не используйте аргумент аргумента обратного вызова один раз.Вместо этого используйте возвращенное обещание и продолжайте использовать обещания.

ref.child("Users").child(theDataToAdd).once('value').then(snapshot => {
    // do the next thing here
})

Если вы не знаете, как работают обещания, посмотрите этот сериал, начинающийся здесь: https://www.youtube.com/watch?v=7IkUgCLr5oA&index=1&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM

Трудно бытьэффективно с облачными функциями без полного понимания обещаний.

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