我构建的应用程序在离线模式下执行一些Firestore查询和更新,即使连接可用。我跑了firebase.firestore().settings({persistence: false})
将模拟器重置为出厂设置时,在第一次运行时,它会在在线模式下运行查询,但随后会快速回退到离线状态。
是否有可能由于某些写入失败而导致其自动降级为脱机模式而无法恢复?有没有办法检查Firestore目前是在线还是离线?有没有办法强制查询与服务器同步?
使用RNfirebase 4.0.6,Xcode 9.3,iOS 11.3,react-native 0.54。 也适用于iOS 10.3
答案 0 :(得分:0)
在尝试解决这个问题大约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 })