在未触发值更改时反应本机Firebase数据库

时间:2018-11-04 20:53:33

标签: firebase react-native firebase-realtime-database react-native-firebase

我有一个React Native应用并使用Firebase数据库。

我尝试使用ononce函数从数据库中获取项目,但是我不知道自己在做什么错,因为我没有任何数据。

这是我从firebase数据库获取数据的代码:

firebase.database().ref("messages/").once('value', snapshot => {console.log("snapshot value", snapshot)});

我也使用on而不是once从上面尝试了命令,结果相同。从未调用console.log

当我添加消息时,一切正常,消息显示在Firebase控制台中。对于添加消息,我正在这样做:

firebase.database().ref("messages/").push(message);

对于firebase,我正在使用以下库:rnfirebase.io

这是使用的版本: 反应:16.6.0-alpha.8af6728 反应本机:0.57.4 反应本机firebase:5.0.0

1 个答案:

答案 0 :(得分:0)

Firebase一次返回一个Promise,因此您必须在使用值之后再使用。 代码应该像

 firebase.database().ref('tableNameHere').once('value').then(snapshot => {
      if(snapshot.exists()){
         console.log(snapshot.val());
      }
}).catch(err => console.log(err));

在使用on value时,该函数将在值的更改上调用,例如在CRUD操作上

 firebase.database().ref('tableNameHere').on('value', snapshot => {
              if(snapshot.exists()){
                 console.log(snapshot.val());
              }
        },(err) => console.log(err))