所以我有这种方法可以从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()
答案 0 :(得分:0)
将其用于Firestore设置(在Kotlin中)
val firestoreSettings: FirebaseFirestoreSettings = FirebaseFirestoreSettings.Builder()
.setPersistenceEnabled(false/*OR True | Control it whenever you need*/)
.setSslEnabled(true)
.build()
firebaseFirestore.firestoreSettings = firestoreSettings
答案 1 :(得分:0)
如果您想显式控制get()
从何处获取数据,可以传入一个Source
参数,告诉它该怎么做:
.get(Source.CACHE)
或
.get(Source.SERVER)
另请参见get(Source)
的{{3}}和guide。