Firebase云功能会等到从数据库收到异步数据

时间:2018-05-11 21:45:02

标签: javascript firebase firebase-realtime-database

我想检查Firebase Realtime DB中是否存在数据。问题是B总是被执行,因为执行if(snapshot.exists())时,它没有真值,因为它是异步调用,所以它没有值。

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

  });

如何等到if语句获得true / false值然后继续执行代码?

1 个答案:

答案 0 :(得分:0)

不要使用一次回调参数参数。请改用返回的promise,并继续使用promises。

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

如果没有完全理解承诺,很难在Cloud Functions中发挥作用。