【发布时间】:2017-04-12 15:14:57
【问题描述】:
我有一个类似于以下用于直接消息聊天的 firebase 数据结构:
{
"dms" : {
"meta" : {
"1-2" : {
"lastMessage" : "Inadvertently",
"lastMessageFrom" : 5,
"lastMessageKey" : "-KhUHUqK9WfUJcjs2fQ-",
"timestamp" : 1491952336485,
"users" : {
"uid-1" : {
"lastMessageRead" : {
"key" : "-KhStVBVIfRGepiWt6cn"
}
},
"uid-2" : {
"lastMessageRead" : {
"key" : "-KhSrksAgg_2TqmcLjsz"
}
}
}
}
}
}
}
如果用户 id 是1,我只想检索存在users.uid-1 的节点。在 Swift 中,我认为这看起来像:
FIRDatabase.database().reference().child("dms").child("meta").queryOrdered(byChild: "users/uid-3").observe(.value, with: { (snapshot) in
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
...
但这会返回每个dms 节点。例如,我在上面查询uid-3,但它会返回我提供的数据结构示例中的节点。我做错了什么?
【问题讨论】:
-
您是否尝试过为观察者再添加一个子级别?
...child("users").queryOrdered(byChild:"uid-3").observe... -
@Prientus 这不会给我结果中的用户节点吗?我需要从
1-2开始的节点作为键,所以我得到lastMessage...元数据。 “用户”也不是“元”的孩子,所以我不确定它是如何工作的。
标签: swift firebase firebase-realtime-database