【发布时间】:2021-04-29 18:02:30
【问题描述】:
我正在尝试使用以下数据库结构和查询从我的集合组userPosts 中获取三个最新文档:
-posts
-{userID}
-userPosts
-{documentID}
-postTime(Field)
查询:
postQuery = Firestore.firestore()
.collectionGroup("userPosts")
.order(by: "postTime", descending: true)
.limit(to: 3)
用于查询 Firestore 的函数:
func loadPosts() {
postQuery.getDocuments{ [weak self](querySnapshot, error) in
self!.q.async{
var postsTemp = self?.postArray
for doc in querySnapshot!.documents{
self?.documents += [doc]
let post = self!.createPost(doc)
if(!self!.postArray.contains(post)){
postsTemp?.insert(post, at: 0)
}
DispatchQueue.main.async {
self!.postArray = postsTemp!
self!.tableView.reloadData()
}
}
}
}
}
但是,当我运行它时,由于querySnapshot 为 nil,我得到了一个错误。我不确定为什么会发生这种情况,因为当我将降序更改为 false 时,我得到了一个结果,但顺序与我想要的相反。我感觉这与我的查询有关,但不确定我哪里出错了。
【问题讨论】:
-
AFIK,使用collectionGroup,orderby 可能需要
Indexing,您是否有任何错误说要创建索引? -
不,我已经创建了索引。
标签: swift firebase google-cloud-firestore