【问题标题】:React native firebase database on value change not triggered对未触发值更改的本机 Firebase 数据库做出反应
【发布时间】:2018-11-04 20:53:32
【问题描述】:

我有一个 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 反应原生火力基地:5.0.0

【问题讨论】:

  • 您分享的代码看起来不错。您可能想添加第二个回调,以查看是否有错误:firebase.database().ref("messages/").once('value', snapshot => {console.log("snapshot value", snapshot)}, error => { console.error(error); })
  • @FrankvanPuffelen 我现在添加了error,但没有任何改变。控制台中没有显示错误。
  • 代码对我来说也很好。您使用的是什么版本的 React Native、React Native Firebase 和原生 Firebase SDK?如果可能的话,您能否编辑并添加这些内容 - 谢谢
  • @Salakar 我现在已经在帖子中添加了版本。
  • @DanielDudas 太好了,谢谢!所以我想这里发生的是一个最近开始在 RN 56 和 57 中发生的错误,其中 RN 重新加载/实时重新加载会破坏侦听器/引用行为。好消息是已经有了修复;您能否从 NPM 安装 RNFB v5.1.0-rc3,然后按照 v5.1.0 的升级说明(仍待发布):rnfirebase.io/docs/master/release-notes#5.1.0 并让我知道问题是否不再出现?谢谢

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


【解决方案1】:

Firebase 曾经返回一个承诺,因此您必须在使用 value 之后使用 then。 代码应该是这样的

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

当使用值时,函数将在值变化时调用,例如在 CRUD 操作中

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

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2019-05-27
    • 2023-03-17
    • 2015-05-09
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多