按孩子查询Firebase数据

时间:2017-12-23 15:24:45

标签: swift database firebase firebase-realtime-database

我现在很长时间使用swift和Firebase,但是遇到了我的一个查询无法正常工作的问题。

我的每条消息都分配了一个创建日期,我可以在加载消息时从数据中调用它,但是我无法通过子节点“creationDate”加载它,这是我的时间戳节点。

我的消息就像在聊天应用中一样发送,没有问题,以下是我查询数据的代码。 正如我所提到的,路径是正确的,代码仅用于测试目的

注意:这只是一个代码段,用于测试路径是否正确

    func checkMessages() {
    guard let currentUser = API.User.CURRENT_USER?.uid else {return}
    API.Message.REF_MESSAGES_CHAT.child(currentUser).queryOrdered(byChild: "creationDate").observeSingleEvent(of: .value) { (snapshot) in

        if let dict = snapshot.value as? [String:Any] {
            for key in dict.keys {

                if let value = dict[key] as? [String:Any] {
                    let creationDate = value["creationDate"] as! Double
                    let text = value["text"] as! String

                    print("creation:" , creationDate)
                    print("text:", text)
                }
            }
        }
    }
}

打印输出

creation: 1514041174.13297
text: 8
creation: 1514041177.54951
text: 10
creation: 1514041171.24212
text: 6
creation: 1514041172.35241
text: 7
creation: 1514041168.06832
text: 3
creation: 1514041166.98511
text: 2
creation: 1514041170.10783
text: 5
creation: 1514041165.88657
text: 1
creation: 1514041169.09632
text: 4
creation: 1514041175.60879
text: 9
我正确地命令他们(1,2,3,4,5,6,7,8,9,10)。 任何的想法? 我在这一点上真的很挣扎,因为我在我的应用程序中实现了30多次这个功能,而在其他任何地方只是查询它的问题。

编辑:上传消息

        let creationDate = Date().timeIntervalSince1970
    let timestamp = ["creationDate": creationDate, "text": text] as [String : Any]
    API.Message.REF_MESSAGES_CHAT.child(currentUser).child(newMessageID).setValue(timestamp)

1 个答案:

答案 0 :(得分:0)

API.Message.REF_MESSAGES_CHAT.child(currentUser).queryOrdered(byChild: "creationDate").observeSingleEvent(of: .value) { snapshot in ... }