检查本地是否存在Firestore文档

时间:2020-06-16 08:47:05

标签: android kotlin google-cloud-firestore

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

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

此方法的问题在于,每次必须使用enableNetwork()重新激活网络,否则下一次呼叫将全部在本地进行。

没有更有效的方法吗?

1 个答案:

答案 0 :(得分:3)

检查Firestore文档是否在本地

从16.0.0 SDK版本更新开始,我们可以借助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