我有一个类似的firebase数据库结构
是否可以通过电子邮件地址“[email protected]”查询并检索“1248769d7j8”和其父项“deaf7834jd8d7j-78”?
我需要的解决方案是使数据库结构更平坦。但我想知道是否有可能不经过非规范化
更新:在我的情况下都124…还有DEA…是未知的,唯一的身份证
最佳答案
编辑:最初的答案是肯定的,但是有最新的信息
在op中,父节点'deaf…'和子节点'1248…'
都是未知的,所以没有办法进行深入的查询。
如果子节点“1248”与聋子的每个子节点的密钥一致…那么答案是肯定的。
是的,您当然可以得到父节点以及父节点的父节点。这是迅速的,因为平台没有具体说明,但概念是相同的全面。
给定一个结构
root
posts
post_1
details
posted_by: "Leroy"
post_2
details
posted_by: "Bill"
让我们通过深度查询来查询leroy节点:
let postsRef = ref.child("posts")
let queryRef = dataRef.queryOrdered(byChild: "details/posted_by")
.queryEqual(toValue: "Leroy")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in
let a = snapshot.key //the posts node
print(a)
for child in snapshot.children {
let childSnap = child as! FIRDataSnapshot
print(childSnap.key) //the direct parent node
}
})
结果会打印出来
posts
post_1
另一个选项是将父节点包含在较低级别的节点中,如下所示
root
deaf91298823
1248
email: "[email protected]"
name: "Adam"
parent_node: "1248"
parent_parent: "deaf91298823"