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

}