我现在很长时间使用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)
答案 0 :(得分:0)
API.Message.REF_MESSAGES_CHAT.child(currentUser).queryOrdered(byChild: "creationDate").observeSingleEvent(of: .value) { snapshot in ... }