我有一个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,但它将返回我提供的数据结构示例中的节点。我做错了什么?
发布于 2017-04-13 00:11:08
我最终将我的结构更改为:
{
"meta" : {
"1-2" : {
"lastMessage" : "Dude....",
"lastMessageFrom" : 2,
"lastMessageKey" : "-KhXpXDn7et6mgFJRkWb",
"timestamp" : 1492011852859,
"users" : {
"uid-1" : true,
"uid-2" : true
},
"users-meta" : {
"uid-2" : {
"lastMessageRead" : {
"key" : "-KhXpXDn7et6mgFJRkWb"
}
}
}
}
}
}而我的查询要求子值等于true。我猜在他们的文档中,当他们解释如何首先对空值进行排序时,他们是指空值还是缺失?
https://stackoverflow.com/questions/43373504
复制相似问题