swift - 如何在 Firestore 中使用文档 ID 创建复合索引
问题描述
所以我正在使用带有 swift 的 firebase cloud firestore(但这是 firestore 的一个普遍问题),我想使用查询对一些文档进行排序,比如
fetchQ.whereField(fieldName, isGreaterThan: startingValue)
但是如果字段具有相同的值,我想保证某种顺序,按理说文档ID对此有好处,所以我添加
.order(by: FieldPath.documentID(), descending: false)
但是现在我在控制台中收到错误消息,我必须在其中粘贴 url 才能创建复合索引。我这样做了,除了它只针对单个索引“fieldName”,省略了文档 ID,所以很明显我在尝试使用单个字段创建复合索引时遇到错误。我还尝试了两个字段加上文档 ID,果然 url 为这两个字段生成了一个复合索引,但忽略了文档 ID。
Firebase 控制台中的复合索引页面也没有创建涉及文档 ID 的复合索引的选项。
所以在我看来,也许使用文档 ID 进行排序不是预期的做法?我应该为每个文档创建一个唯一的 ID 以进行排序,还是可以使用文档 ID 进行排序,我应该怎么做?
解决方案
来自文档:“默认情况下,查询按文档 ID 升序检索满足查询的所有文档”(firebase.google.com/docs/firestore/query-data/...)。因此,您想要实现的行为就是您开箱即用的行为。
推荐阅读
- solr - Pysolr add throws (HTTP 500): [原因:任务队列处理已停止
- python - Docker / Python / LibreOffice:[Java 框架] 函数 createSettingsDocument (elements.cxx) 中的错误。javaldx 失败
- ios - 安装了 Appsflyer SDK,仍然收到未安装 SDK 的邮件
- python - 无法从 Yelp 中提取评论
- android - 德尔福 FMX 安卓汽车服务
- android - Android 在方向更改时崩溃
- javascript - Angular routerLink 附加路由而不是替换
- amazon-web-services - 如何使用 SecureString SSM 参数存储创建 EC2 实例?
- java - 如何在对其执行某些操作后更新arraylist而不重新启动活动
- python - YoloV4 自定义数据集训练测试拆分