我的Firestore仍在从缓存中检索文档(检索到的文档具有isFromCache=true
,即使我明确告诉它不要:
class MainActivity : AppCompatActivity() {
val db = FirebaseFirestore.getInstance()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val dbSettings = FirebaseFirestoreSettings.Builder().setPersistenceEnabled(false).build()
db.firestoreSettings = dbSettings
以上是我在启动器中设置Firestore设置的活动。我的文档读取在另一个活动/片段中,但这没关系,因为这应该为整个应用程序设置设置。
您知道为什么它仍从缓存中检索文档吗?
来自我的GeoFire
onDocumentEntered
回调的示例:
DocumentSnapshot{key=instances/mQhRbBHCiKEB, metadata=SnapshotMetadata{hasPendingWrites=true, isFromCache=true}
答案 0 :(得分:4)
现在,您可以选择是仅从服务器还是仅从缓存中获取数据,如下所示(仅用于服务器的示例):
DocumentReference documentReference= FirebaseFirestore.getInstance().document("example");
documentReference.get(Source.SERVER).addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
//...
}
});
仅对于缓存,只需将上面的代码更改为Source.CACHE。
默认情况下,这两种方法仍会尝试使用服务器并回退到缓存。