【发布时间】:2017-11-10 12:22:44
【问题描述】:
从服务器检索数据可能需要几秒钟。有没有办法同时使用直接get来检索缓存的数据?
onComplete 似乎只有在从服务器检索数据时才被调用:
db.collection("cities").whereEqualTo("state", "CA").get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
...
}
}
});
缓存数据有回调吗?
【问题讨论】:
-
如果数据可以从缓存中获取,你可以通过:firebase.google.com/docs/firestore/manage-data/…然后检查
querySnapshot.getMetadata().isFromCache()。 -
另外提一下,如果缓存不包含特定文档的数据,或者该文档不存在,get调用会返回错误。
-
@FrankvanPuffelen 据我了解,这样的例子使用了一个监听器。是否也可以通过直接获取来做到这一点?
-
是的,并且在页面底部 Frank 的链接中也提到了,“查询与离线持久性一起工作。您可以使用直接获取或通过侦听来检索查询结果,如前几节。”。所以请参阅官方文档的前面部分。
-
唯一的例子是使用
addSnapshotListener而不是直接获取。如果您知道如何通过直接获取来实现,请您发布一个sn-p吗?谢谢
标签: android firebase google-cloud-firestore