【发布时间】:2020-01-29 07:27:10
【问题描述】:
所以我有这个方法可以从 Firestore 中查询文档:
FirestoreCollectionReference.event.getReference()
.whereEqualTo(FIRESTORE_EVENT_FIELD_CITY,selectedCity)
.whereEqualTo(FIRESTORE_EVENT_FIELD_HAS_BEEN_APPROVED,true)
.whereGreaterThanOrEqualTo(FIRESTORE_EVENT_FIELD_DATE_START_TIME,now.toDate())
.whereLessThanOrEqualTo(FIRESTORE_EVENT_FIELD_DATE_START_TIME,oneMonthFromNow.toDate())
.orderBy(FIRESTORE_EVENT_FIELD_DATE_START_TIME, Query.Direction.ASCENDING)
.orderBy(FIRESTORE_EVENT_FIELD_RANKPOINT, Query.Direction.DESCENDING)
.limit(limit)
.get()
.addOnSuccessListener { snapshot ->
val eventDocuments = snapshot.documents
val eventArray = ArrayList<Event>()
for (document in eventDocuments) {
val eventData = document.data
val event = Event(dataEvent = eventData)
eventArray.add(event)
}
completion(null,eventArray)
}.addOnFailureListener {
completion(it.localizedMessage,null)
}
我了解,如果我的应用使用该方法离线,firestore 将自动使用缓存的文档。
但我想要的是......
假设我的应用将始终在线。但我不希望每次打开应用程序时,它都会从服务器获取数据。我想给出限制。
如果用户从服务器获取数据的最后一个时间戳是一个多小时前,那么好的,从服务器获取数据并显示加载指示器。否则只需从之前从服务器获取的缓存文档中获取数据,并且不显示加载指示符。
我可以这样做吗?如何强制在 Firestore 中获取缓存文档?即使用户在线,我也想获取缓存文档
我试图从这里阅读文档,https://firebase.google.com/docs/firestore/manage-data/enable-offline
但似乎只有在发生离线情况时才能检索缓存的文档。该示例适用于实时侦听器。就我而言,我只使用get()
【问题讨论】:
标签: android firebase caching google-cloud-firestore