【问题标题】:Firebase Firestore how to identify an offline readFirebase Firestore 如何识别离线读取
【发布时间】:2018-06-18 21:38:22
【问题描述】:

我正在使用 Firebase Firestore,但在读取操作时遇到问题: 我使用了一个 onCompleteListener,在里面,如果操作成功与否,我会调用不同的回调。 问题是,如果有网络问题,onCompleteListener 会被调用,但是 task.isSuccessfull 返回 true!所以我得到一个空结果,我无法将其与 REAL 空结果区分开来。有什么方法可以区分网络问题和空读吗?

非常感谢!我的功能就在下面:

dataBase.collection(COLLECTION)
        .whereEqualTo(FIELD, searched)
        .get()
        .addOnCompleteListener { task: Task<QuerySnapshot> ->
            if (task.isSuccessful) {
                listenerSuccess(task.result)
            } else {
                listenerError()
            }
        }

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    如果您处于离线状态,客户端将首先尝试连接。一旦确定无法连接,它会根据本地数据库中的数据尝试完成get()。这是对 Firestore 的有效操作,所以这就是任务成功完成的原因。

    您可以通过checking the metadata:querySnapshot.getMetadata().isFromCache() 检测结果是来自本地缓存还是直接来自服务器。来自文档:

    true 如果快照是从缓存数据创建的,而不是保证最新的服务器数据。如果您的听众选择了元数据更新(通过MetadataChanges.INCLUDE),一旦客户端收到来自后端的最新数据,您将收到另一个isFomCache() 等于false 的快照。

    【讨论】:

    • 今晚我会试试,但我认为这可能会解决我的问题。谢谢!
    • 我已经能够修复它,这要归功于在没有连接的情况下更好地理解 Firestore 行为。它就像一个魅力!
    猜你喜欢
    • 1970-01-01
    • 2021-01-19
    • 2021-10-27
    • 2018-05-30
    • 2022-01-20
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多