我有一个类似的firebase数据库结构
database - 按 child 值(value)的 child 搜索Firebase-LMLPHP
是否可以通过电子邮件地址“[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"

08-06 21:39