首页 > 解决方案 > Firestore - iOS 反应原生应用程序在离线模式下工作

问题描述

我构建的应用程序在离线模式下执行一些 Firestore 查询和更新,即使连接可用。我跑了firebase.firestore().settings({persistence: false})

将模拟器重置为出厂设置时,在第一次运行时,它确实以在线模式运行查询,但随后很快又回到离线状态。

是否有可能由于某些写入失败而自动降级为离线模式而没有恢复选项?有什么方法可以检查 Firestore 当前是在线还是离线?有没有办法强制查询与服务器同步?

使用 RNfirebase 4.0.6、Xcode 9.3、iOS 11.3、react-native 0.54。也发生在 iOS 10.3 上

标签: react-nativegoogle-cloud-firestorereact-native-firebase

解决方案


在尝试解决此问题大约 20 小时后,我找到了原因。

当调用firebase.firestore().collection('someCollection').doc('docId').set(...)时,当docId指向一个不存在的DocumentReference时,RNfirebase 内部关闭传出写入队列。可以读取但不能写入。

为了解决这个问题,我所要做的就是改变:

firebase.firestore().collection('someCollection').doc('docId').set(someObject)

firebase.firestore().collection('someCollection').doc('docId').update(someObject, { merge: true })


推荐阅读