Firestore getDocuments Source.cache and index - 脱机查询



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

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 云服务在应用联机时那样离线执行可大规模缩放的本地查询。 这是一个已知的限制,没有解决方法,当集合本地缓存更多文档时,问题会变得更糟。

您可能需要考虑使用其他方法对新文档进行排队,然后等到应用程序联机以检查所有文档。

最新更新