按 child 排序的 Firebase 查询不起作用

Firebase query ordering by child not working

我尝试根据创建日期对我的 table 查看内容进行排序。最新的应该在上面。我的代码似乎没问题,但它没有显示正确的顺序。恰恰相反。

ref = Database.database().reference().child("placeID/\(placeIdFromSearch)")
ref.queryOrdered(byChild: "userTime").queryLimited(toLast: 10).observe(DataEventType.value, with: {(snapshot) in
    
    if snapshot.childrenCount > 0 {
        self.table.removeAll()
        
        for video in snapshot.children.allObjects as! [DataSnapshot] {
            
            let Object = video.value as? [String: AnyObject]
            
            let userName = Object?["userName"]
            let userGroup = Object?["userGroup"]
            let userComment = Object?["userComment"]
            let userTime = Object?["userTime"]
            let userLikes = Object?["userLikes"]
            
            let video = Videos(userName: userName as! String, userGroup: userGroup as! String, userComment: userComment as! String, userTime: userTime as! Int, userLikes: userLikes as! String)
            self.table.append(video)
            self.tableView.reloadData()
            
        }
    }    
})

Firebase 实时数据库结果始终按升序排列。无法从数据库中按降序获取它们,因此您必须在应用程序代码中反转结果。

一个简单的选择是将每个项目插入 table 的顶部,而不是像现在这样将其附加到底部:

self.table.insert(video, at: 0)

另一种方法是在数据库中存储反转值,例如:userTime: -1654342137807。这样数据库使用的升序实际上就是您想要的。

另见: