google-cloud-firestore - Firestore getDocuments 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 云服务在应用程序在线时执行的那样离线执行大规模可扩展的本地查询。这是一个已知的限制并且没有解决方法,当有更多本地缓存的文档用于集合时,问题会变得更糟。
您可能需要考虑使用其他方法对新文档进行排队,然后等到应用程序上线后再检查它们。
推荐阅读
- python - 无论我包含哪些参数, sympy 中的 parse_expr() 都不起作用
- java - 使用 Retrofit 2 Android 将数组的 POST 请求发送到 JSON
- flourishlib - 有没有人看过堆叠条形图比赛的模板......?
- javascript - React useEffect 渲染不止一次
- java - 如何将视图从 Y 位置移动到另一个 Y
- reactjs - 为什么我从 API 调用中得到太多响应
- sql - Redshift 查询以获取日期差异
- python - conda为什么会升级python的版本,如何防止呢?
- ios - 如何在没有分组表格样式的 SwiftUI 中创建 UISplitViewController?
- javascript - 每次调用函数时 JavaScript 都会改变值