【发布时间】:2018-09-24 07:31:45
【问题描述】:
我之前问过这个问题,但还没有找到可行的解决方案。 我想要的是获取一个年龄范围内的用户列表,并按“createdAt”时间戳排序,但由于“生日”范围过滤器,第一个 orderBy 必须在“生日”字段上。
这是我的查询:
database.collection("users")
.whereField("birthday", isGreaterThan: exploreSettings.upperAgeDate)
.whereField("birthday", isLessThan: exploreSettings.lowerAgeDate)
.whereField("isHidden", isEqualTo: false)
.order(by: "birthday", descending: true)
.order(by: "createdAt", descending: true)
.limit(to: 8)
.start(afterDocument: lastSnapshot)
.getDocuments {...}
这就是它将返回的内容
[
["name": "John", "age": 21, "createdAt": 2005],
["name": "Jane", "age": 22, "createdAt": 2003],
["name": "Adam", "age": 23, "createdAt": 2004],
["name": "Karl", "age": 24, "createdAt": 2001],
["name": "Mila", "age": 25, "createdAt": 2002],
]
以及我希望它返回的内容
[
["name": "Karl", "age": 24, "createdAt": 2001],
["name": "Mila", "age": 25, "createdAt": 2002],
["name": "Jane", "age": 22, "createdAt": 2003],
["name": "Adam", "age": 23, "createdAt": 2004],
["name": "John", "age": 21, "createdAt": 2005],
]
有些人建议我以某种方式将生日和创建时间戳合并到一个字段中,但我知道我应该如何做到这一点
【问题讨论】:
-
您想使用 createdAt 对数组进行排序吗?
-
我想填充按 createdAt @AbhirajsinhThakore 排序的数组
-
我在你的数组里面看到了,createdAt你没有键值对。?这是你的回应。?或者打印时有一些错误。?我可以使用“CreatedAt”键为您排序数组,但前提是在 created at 中只有一个键值对。
-
抱歉,这是堆栈溢出中的拼写错误。数组只是查询将从 db 获得什么以及 et 应该获得什么的示例。 @AbhirajsinhThakore
-
添加了带有编辑和输出的答案,请检查它是否适合您。?
标签: swift firebase google-cloud-firestore