Firestore iOS - 按文档中的字段排序集合
Firestore iOS - Ordering collection by field in document
我有一个名为“homeList”的数组,观察者“CURRENT_USER_FRIENDS_REF”收集并将其放置在数组中。我怎样才能做到这一点,以便我可以通过文档快照中的“时间戳”字段对这个数组进行排序。
homeList数组函数
var homeList = [User]()
func addHomeObserver(_ update: @escaping () -> Void) {
CURRENT_USER_FRIENDS_REF.getDocuments { snapshot, error in
self.homeList.removeAll()
guard error == nil else {
#if DEBUG
print("Error retrieving collection")
#endif
return
}
let group = DispatchGroup()
for document in snapshot!.documents {
let whosfrom = document.get("fromId") as? String
let id = document.documentID
**let timestamp = document.get("timestamp") as? NSNumber**
group.enter()
self.getUser(id, completion: { (user) in
if whosfrom != self.CURRENT_USER_ID {
self.homeList.append(user)
}
group.leave()
})
}
group.notify(queue: .main) {
update()
}
}
}
当前用户好友参考:
var CURRENT_USER_FRIENDS_REF: CollectionReference {
return CURRENT_USER_REF.collection("friends")
}
谢谢。
您可以对集合引用使用 order(by
来获取结果。
CURRENT_USER_FRIENDS_REF.order(by: "timestamp", descending: true).getDocuments { snapshot, error in
}
我有一个名为“homeList”的数组,观察者“CURRENT_USER_FRIENDS_REF”收集并将其放置在数组中。我怎样才能做到这一点,以便我可以通过文档快照中的“时间戳”字段对这个数组进行排序。
homeList数组函数
var homeList = [User]()
func addHomeObserver(_ update: @escaping () -> Void) {
CURRENT_USER_FRIENDS_REF.getDocuments { snapshot, error in
self.homeList.removeAll()
guard error == nil else {
#if DEBUG
print("Error retrieving collection")
#endif
return
}
let group = DispatchGroup()
for document in snapshot!.documents {
let whosfrom = document.get("fromId") as? String
let id = document.documentID
**let timestamp = document.get("timestamp") as? NSNumber**
group.enter()
self.getUser(id, completion: { (user) in
if whosfrom != self.CURRENT_USER_ID {
self.homeList.append(user)
}
group.leave()
})
}
group.notify(queue: .main) {
update()
}
}
}
当前用户好友参考:
var CURRENT_USER_FRIENDS_REF: CollectionReference {
return CURRENT_USER_REF.collection("friends")
}
谢谢。
您可以对集合引用使用 order(by
来获取结果。
CURRENT_USER_FRIENDS_REF.order(by: "timestamp", descending: true).getDocuments { snapshot, error in
}