Firebase React Native获取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase React Native获取数据相关的知识,希望对你有一定的参考价值。

我正在尝试使用feed做反应原生的应用程序。在我的主屏幕上,我去获取数据:

fetchData() 
firebase.database().ref(`/posts/$group`).on('value', async snapshot => ...

当我想要例如喜欢帖子的评论时,我首先将数据推送到具有不同查询的firebase,例如:

export const likeComment = (...) =>    
firebase.database().ref(`/posts/$group/$post`).update
(
   updatedAt: firebase.database.ServerValue.TIMESTAMP 
);
firebase.database().ref(`/posts/$group/$post/lastComments`).set(...);

但我意识到我的第一个函数fetchData被调用了3次。然后我将我的查询分组如下:

let updates = 
updates[`/posts/$group/$post/lastComments`] = ...;
updates[`/posts/$group/$post`] =  ... ;
firebase.database().ref().update(updates);

然后,fetchData仍然被调用了2次。

我想知道这是否是最好的方法,为什么我的函数fetchData仍被调用两次。谢谢你的帮助

答案

从有限的代码中很难说,但我的猜测是fetchData实际上并没有被多次调用,而是当你对Firebase数据库进行更新时,snapshot会被激活。

代码的一部分,你说.on('value', async snapshot =>你正在设置一个监听器,以便在值发生变化时随时向您发送更新。

所以我的猜测是你的三个调用是:

  1. 第一次实际调用fetchData并设置监听器
  2. 当你打电话给.on( snapshot时,你的update听众开火
  3. 当你打电话给.on( snapshot时,你的set听众再次开火

这种基于推送的数据库工作流程是Firebase的主要优势之一。如果您只想获取一次数据而不获取实时更新,则可以调用.once(而不是.on(

https://firebase.google.com/docs/database/web/read-and-write

以上是关于Firebase React Native获取数据的主要内容,如果未能解决你的问题,请参考以下文章

无法从 React-Native-Firebase(v6) Firestore 获取数据:未定义不是函数(靠近 '...this._firestore.native.collectionGet...'

Firebase 实时数据库获取函数返回未定义(较新的 firebase 版本,2021) - 使用 React Native

登录 Firebase React Native Expo 后无法获取用户数据

Firebase React Native——如何获取和传输设备 ID/令牌?

React Native Firebase Analytics 获取用户国家

无法使用 this.state.data.map() 在 react native firebase 中显示获取的数据