代码之家  ›  专栏  ›  技术社区  ›  DAA

FielBaseFixStury如何识别脱机读取

  •  1
  • DAA  · 技术社区  · 7 年前

    我正在使用FielBaseFixStand,我面临的问题是读操作: 我使用onCompleteListener,在其中,如果操作成功与否,我将调用不同的回调。 问题是,如果存在网络问题,将调用onCompleteListener,但task.issueccessfull返回true!!所以我得到了一个空结果,这和真正的空结果是分不开的。有没有办法区分网络问题和空读取?

    非常感谢你!我的功能如下:

    dataBase.collection(COLLECTION)
            .whereEqualTo(FIELD, searched)
            .get()
            .addOnCompleteListener { task: Task<QuerySnapshot> ->
                if (task.isSuccessful) {
                    listenerSuccess(task.result)
                } else {
                    listenerError()
                }
            }
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   Frank van Puffelen    7 年前

    如果您脱机,客户端将首先尝试连接。一旦发现无法连接,它将尝试完成 get() 基于本地数据库中的数据。这是FixSt店中的一个有效的操作,这就是任务成功完成的原因。

    通过 checking the metadata : querySnapshot.getMetadata().isFromCache() . 从文档中:

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

    推荐文章