我有一个类似于
的firebase数据库结构是否可以通过电子邮件地址查询" a@a.com"并检索两个键" 1248769d7j8"以及它的父母" deaf7834jd8d7j-78" ?
我的解决方案是使数据库结构更平坦。但我想知道是否有可能在没有非规范化的情况下顺利通过
更新:在我的情况下,124 ...和dea ...都是未知的唯一ID
答案 0 :(得分:4)
编辑:答案最初是,但是,更新的信息 从OP,父节点'聋......'和子节点'1248 ...' 都是未知数,所以没有办法进行深层次的查询。
如果子节点“1248”与聋人节点的每个子节点的密钥一致,那么答案是肯定的。
是的,您当然可以获得父节点以及父节点的父节点。这是Swift,因为没有指定平台,但概念是全面的。
给定结构
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: "asad@asdd.com"
name: "Adam"
parent_node: "1248"
parent_parent: "deaf91298823"