检查本地Document
是否存在的最佳方法是什么?
您应该始终将disableNetwork()
用作documentation says吗?
此方法的问题在于,每次必须使用enableNetwork()
重新激活网络,否则下一次呼叫将全部在本地进行。
没有更有效的方法吗?
答案 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。