【问题标题】:Check if a Firestore Document exist locally检查本地是否存在 Firestore 文档
【发布时间】:2020-10-05 19:52:21
【问题描述】:

检查本地是否存在Document 的最佳方法是什么?

您应该始终使用disableNetwork() 作为documentation says 吗?

这种方法的问题是每次使用enableNetwork()都必须重新激活网络,否则接下来的调用都将在本地进行。

没有更有效的方法吗?

【问题讨论】:

    标签: android kotlin google-cloud-firestore


    【解决方案1】:

    检查本地是否存在 Firestore 文档

    从 SDK 16.0.0 版本更新开始,我们可以通过DocumentReference.get(Source source) 方法或Query.get(Source source) 方法检查本地是否存在 Firestore 文档,如果我们有兴趣检查结果文件是否存在的查询实际存在。

    默认情况下,get() 通过等待来自服务器的数据尽可能尝试提供最新数据,但如果您处于离线状态且无法访问服务器,它可能会返回缓存数据或失败。可以通过 Source 参数更改此行为。

    所以我们现在可以将源作为参数传递给 DocumentReference 或 Query,这样我们就可以强制仅从缓存中检索数据。

    所以你应该使用这样的东西:

    val root = FirebaseFirestore.instance
    val docIdRef = root.collection("CollectionName").document(docId)
    docIdRef.get(Source.CACHE).addOnSuccessListener(/* ... */)
    

    在这种情况下,我们强制仅从缓存中检索数据。如果您只想从服务器获取数据,您应该将作为参数传递给get() 方法Source.SERVER。更多信息here.

    【讨论】:

      猜你喜欢
      • 2021-07-22
      • 1970-01-01
      • 2021-11-09
      • 2019-04-19
      • 1970-01-01
      • 2021-11-25
      • 2019-09-24
      • 1970-01-01
      相关资源
      最近更新 更多