即使我已禁用,Firestore仍从缓存中检索文档

时间:2019-07-20 08:58:14

标签: android firebase google-cloud-firestore

我的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}

1 个答案:

答案 0 :(得分:4)

现在,您可以选择是仅从服务器还是仅从缓存中获取数据,如下所示(仅用于服务器的示例):

DocumentReference documentReference= FirebaseFirestore.getInstance().document("example");
documentReference.get(Source.SERVER).addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
    @Override
    public void onSuccess(DocumentSnapshot documentSnapshot) {
            //...
    }
});

仅对于缓存,只需将上面的代码更改为Source.CACHE。

默认情况下,这两种方法仍会尝试使用服务器并回退到缓存。