我在我的应用中使用react-native-firebase。我面临的问题是,当用户离线时尝试推送数据时,如何处理UI更新。
如果用户在线,我们可以使用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, 身体:“身体”, 标题:“ 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)
})
答案 0 :(得分:0)
即使在脱机模式下,也应触发.on snspashot侦听器。 根据文档: https://firebase.google.com/docs/database/web/read-and-write
您可以使用value事件读取内容的静态快照 在事件发生时存在的给定路径上。这个方法 附加侦听器时触发一次,每次触发一次 数据(包括子项)发生了变化。
这也应该在离线模式下工作。如果您没有收到更新-则有其他问题。
答案 1 :(得分:0)
此问题通过将以下代码行添加到您的本机代码中而得以解决:
https://rnfirebase.io/docs/v5.x.x/core/default-app#Enable-Database-Persistence