Google cloud firestore Firestore getDocuments Source.cache和索引-脱机查询

Google cloud firestore Firestore getDocuments Source.cache和索引-脱机查询,google-cloud-firestore,Google Cloud Firestore,在我的代码中,我检查是否输入了重复的对象,如下所示: QuerySnapshot querySnapshot = await myCollection .where('x', isEqualTo: x) .where('y', isEqualTo: y) .where('z', isEqualTo: z) .getDocuments(source: Source.cache);

在我的代码中,我检查是否输入了重复的对象,如下所示:

 QuerySnapshot querySnapshot = await myCollection
              .where('x', isEqualTo: x)
              .where('y', isEqualTo: y)
              .where('z', isEqualTo: z)
              .getDocuments(source: Source.cache);
          if (querySnapshot.documents.length == 0) {
           ... add the document to the batch
          }
我发现对数千个文档进行额外检查会降低服务器中添加文档的速度。没有支票,只需要几秒钟,但是有了支票,可能需要几分钟

我在集合中启用了x、y、z字段的索引

问题:当我使用Source.cache进行脱机查询时,该索引是否也脱机工作


在将记录添加到服务器之前,有没有更好的方法来确定记录是否在脱机状态下重复?

Firestore索引在脱机状态下无法正常工作。SDK不具备脱机执行大规模可扩展本地查询的能力,就像Firestore云服务在应用程序联机时可以执行的那样。这是一个已知的限制,并且没有解决方法,当一个集合有更多的本地缓存文档时,问题会变得更糟

您可能想考虑使用其他方法来排队新文档,然后等待应用程序在线检查它们。