react-native - 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 上
解决方案
在尝试解决此问题大约 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 })
推荐阅读
- python - Python Turtle 代码似乎处于无限循环中
- drools - 没有手动保存决策表的 Drools 错误
- c# - masstransit 消息从 rabbitMQ 重复循环
- swift - 调用rest api后如何更改ViewController
- .net - 使用 Azure 数据工厂将数据发送到 Algolia Search
- vue.js - Vue slick carousel 动态滑块 asNavFor 问题
- android-studio - 升级到 Android Studio 4.1.3 和 Gradle 我需要单击“使用 Gradle 文件同步项目”按钮才能运行项目,我该如何解决?
- python - 我想在我为模型中的每个创建 JSONField 的数据库中有多个焊工、助手、钳工名称。请为此建议一种方法
- r - 我可以将 depmixs4 用于多个主题吗?
- python - Selenium Xpath,有人可以帮我解决这个 find.element