我遇到了一种情况,当在没有互联网的情况下调用setValue()
时,firebase数据库返回成功。成功后,该值不会在数据库中更新。我正在使用以下代码(在Swift中):
Database.database().reference().child("key").setValue("something") { (error:Error?, ref:DatabaseReference) in
if error != nil {
// Show error in UI
} else {
// Show done in UI
}
}
我阅读了文档,并说Firebase数据库使用脱机写入。我们如何禁用它?
离线写入数据
如果客户端失去网络连接,则您的应用 将继续正常运行。
连接到Firebase数据库的每个客户端都维护自己的客户端 任何活动数据的内部版本。写入数据时, 首先写入此本地版本。然后,Firebase客户端 将数据与远程数据库服务器以及其他服务器同步 客户“尽力而为”。
p / s:我禁用了离线持久功能
答案 0 :(得分:0)
根据文档,最好在应用离线时使用keepSynced(false)
。
https://firebase.google.com/docs/database/ios/offline-capabilities
let scoresRef = Database.database().reference(withPath: "scores")
scoresRef.keepSynced(false)
答案 1 :(得分:0)
Firebase构建的前提是,它可以(对于用户和开发人员)透明地处理间歇性的连接丢失(大多数情况下)。客户端未连接到服务器时,没有禁用本地写操作的功能。
但是您可以通过监听.info/connected
并在该位置为false
时禁止应用中的写操作来自己实现。有关更多信息,请参阅Firebase文档中的detecting connection state。