当前位置: 首页 > 知识库问答 >
问题:

如何在脱机模式下更新firebase实时数据库“推送”上的UI

湛宏旷
2023-03-14

我在我的应用程序中使用的是react-本地Firebase。我面临的问题是如何处理用户离线时尝试推送数据时的用户界面更新。

如果用户在线,我们可以使用on()方法获得实时更新,但当他们离线时该怎么办。我们知道推送的数据存储在缓存中,并在用户再次在线时推送。这个缓存的数据可以用来做我的目标是实现什么?

以下是我用来接收实时更新的代码:

var ref333 = firebase.database().ref(`/user-posts/${uid}/`)
ref333.on('value',function (snap) {
  var s = snap.val();
  console.log("NEW POSTS "+JSON.stringify(s))
})

我用来推送数据的代码。

var postData={uid:uid,body:'body',title:'title',starCount:0};

// Get a key for a new Post.
var newPostKey = firebase.database().ref().child('posts').push().key;
var ref222 = firebase.database().ref(`/posts/${newPostKey}`)
var ref333 = firebase.database().ref(`/user-posts/${uid}/${newPostKey}`)
ref222.push(postData, function (onComplete) {
  console.log("COMPLETED")
  ref333.push(postData,function (onComplete) {
    console.log("NEXT COMPLETED")
  }, function (error) {
    console.log("ERROR IN ",error)
  })
}, function (error) {
  console.log("error == "+error)
})

共有2个答案

钱德元
2023-03-14

通过将以下代码行添加到本机代码来解决此问题:

https://rnfirebase.io/docs/v5.x.x/core/default-app#Enable-数据库持久性

富锦
2023-03-14

这个在snspashot上,即使处于脱机模式,也应触发侦听器。根据文件:https://firebase.google.com/docs/database/web/read-and-write

可以使用value事件读取给定路径上的内容的静态快照,因为它们在事件发生时存在。此方法在附加侦听器时触发一次,并在每次数据(包括子数据)更改时再次触发。

这也应该在离线模式下工作。如果您没有收到更新-有其他问题。

 类似资料:
  • 我的应用程序有一个目录,它使用Firebase来存储和更新数据。我想显示已经缓存的数据,如果应用程序被杀死,并再次启动,而不在线。 firebase是否在应用程序被终止时删除缓存? 无论用户在线或离线,我们都可以首先推送离线数据。

  • 下载url来自一个单独的图像选择方法,顺便说一句。我的用户创建代码是这样的。

  • 我的问题可能看起来有点天真,但作为一个初学iOS开发人员,我开始认为核心数据可以被firebase实时数据库(或未来的firestore)替换。我在两个seperate项目中使用了它们,在firebase中激活离线特性后,我得到了相同的结果(即,数据被保存到设备中,而不需要internet连接)。我想我在firebase文档中读到了一些关于它不能同时过滤和排序的东西,这可能意味着核心数据可以更方便

  • 我在XCode中编写了一个方法,在firebase实时数据库中保存“用户”。不幸的是,数据没有显示在我的浏览器中的实时数据库中,尽管我通过内置的打印命令从Xcode得到了反馈,一切都很顺利。有人知道吗?我真的很高兴听到你的消息。最美好的祝福 PS:是的:读取和写入在我的数据库规则中被激活。

  • 在做任何其他事情之前,我想澄清,我问的是而不是。 背景: 我有一个应用程序,同时使用Firestore和Firebase实时数据库。我发现了一种单元测试Firestore的方法,通过在dart pub使用cloud firestore模拟包来模拟它。到目前为止,我一直在试图搜索是否有任何Firebase实时数据库的等价物,我没有看到任何。这里和谷歌都有.. 所以我的问题是,如何创建一个需要模拟Fi