首页 > 解决方案 > 如何在 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 进行排序,我应该怎么做?

标签: swiftfirebasegoogle-cloud-firestore

解决方案


来自文档:“默认情况下,查询按文档 ID 升序检索满足查询的所有文档”(firebase.google.com/docs/firestore/query-data/...)。因此,您想要实现的行为就是您开箱即用的行为。


推荐阅读