【发布时间】:2020-01-16 17:50:00
【问题描述】:
我想查询我的 Firestore 数据库中的一个集合
我想查询以获取当前用户供稿的所有帖子。 我目前是这样做的
let ref = Firestore.firestore().collection("feedItems")
.whereField("uid", isEqualTo: uid)
.whereField("wasViewed", isEqualTo: false)
.whereField("isResharedPost", isEqualTo: false)
.whereField("story", isEqualTo: false)
.whereField("createdAt", isGreaterThan: dateFilter as Any)
.order(by: "createdAt", descending: false)
.limit(to: 25)
ref.getDocuments { (snapshot, err) in
我现在正在为故事添加选项,并希望为故事字段等于 true 的 feedItems 查询相同的集合
但是在这种情况下,我还需要确保只获取不到 24 小时的对象。所以我希望我的查询有两个稍微不同的过滤器集
与
.whereField("story", isEqualTo: true)
.whereField("postCreatedAt", isGreaterThan: storyFilter as Any)
和一个有
.whereField("story", isEqualTo: false)
.whereField("createdAt", isGreaterThan: dateFilter as Any)
所有其他字段保持不变,顺序和限制保持不变。
这可以组合成一个复合查询吗?
我试过这样
let ref = Firestore.firestore().collection("feedItems")
ref
.whereField("uid", isEqualTo: uid)
.whereField("wasViewed", isEqualTo: false)
.whereField("isResharedPost", isEqualTo: false)
.whereField("story", isEqualTo: false)
.whereField("createdAt", isGreaterThan: dateFilter as Any)
ref
.whereField("uid", isEqualTo: uid)
.whereField("wasViewed", isEqualTo: false)
.whereField("isResharedPost", isEqualTo: false)
.whereField("story", isEqualTo: true)
.whereField("postCreatedAt", isGreaterThan: storyFilter as Any)
ref.getDocuments { (snapshot, err) in
在试图弄清楚如何处理订单和限制的位置和方式之前,我收到错误无效或权限不足
如果无法合并,我会将它们分成两个单独的查询,这些查询将按顺序调用。
【问题讨论】:
标签: ios swift firebase google-cloud-firestore