【发布时间】:2016-05-22 10:00:25
【问题描述】:
"John" : {
"David" : {
"-KIMA0aPsujdAOpkzP0w" : {
"message" : "hallu",
"sender" : "10154053432889835",
"time" : 1463898873196
}
}
},
"Harry" : {
"Christina" : {
"-KIMA0aPsujdAOpkzP0v" : {
"message" : "hallu",
"seen" : true,
"sender" : "self",
"time" : 1463898873195
}
},
"Pierce" : {
"-KILZ_GH7Ji9hQYNK-6p" : {
"message" : "Eli there.",
"seen" : true,
"sender" : "179914035712208",
"time" : 1463888795301
},
"-KIM8yPz2UDOZwHEg_nn" : {
"message" : "hahjajak",
"seen" : true,
"sender" : "self",
"time" : 1463898597847
},
}
我想查询 John 或 Harry 的顶部节点的“seen”键值为“true”的节点数,其中有多个子节点每个子节点有多个子节点,子节点自动设置了id。
我只想知道将“seen”键设置为 true 的对象的数量以及将“seen”键设置为 false 的对象的数量
我可以提取节点中的所有值如下:
ref.observeSingleEventOfType(.Value, withBlock: { snap in
for (key,value) in snap.value as! NSDictionary {
}
})
我可以遍历字典并手动计算对象的数量。但这在计算上或数据效率上并不高,因为 firebase 是基于体积的。
我想知道是否有任何查询来计算根节点中“seen”键为“true”或根节点中“seen”键为“false”的对象的数量。
更新:
数据结构
John 和 Harry 是用户唯一 ID。 John 节点的直接子节点 David 是用户之前与之聊天的人的唯一 ID。
KIMA0aPsujdAOpkzP0w 节点代表用户 John 与 David 之间的唯一消息。
所以我想要的是计算 David 到 John 没有被 John
看到的消息数量【问题讨论】:
-
作为一般经验法则,最好将实际的 Firebase 数据结构粘贴为文本而不是图像。 Firebase 控制台 -> 数据 -> 右上角三个点,导出 JSON。原因是:它是可搜索的,而且我们不必在答案中重新输入您的结构。
-
好建议!更新了谢谢:)
-
好的。最后一件事。你有一个模棱两可的情况;您想查询 top node 的 'seen' 键值为 true 的节点数,这两个节点是列出的。但是,那些顶部节点没有“seen”的子节点。您问题的最后一部分说 计算根节点中“seen”键为“true”或根节点中“seen”键为“false”的对象的数量,但您的根节点没有有一个“看见”的钥匙。我想我知道你在问什么,但想确定一下。哦,您对只是这两个顶级节点特别感兴趣吗?你能澄清和更新你的问题吗?
-
根据您的建议完成更新
-
我有一个类似的情况,但我的数据是基于日期的所以我有类似年>月> uniqueKeyCreatedByFirebase>TheObjectData的东西。我仍然坚持下去。您是否为此找到了合适的解决方案?我的问题在这里:stackoverflow.com/questions/42026092/…
标签: ios objective-c swift firebase