如何访问子“member”的子memberid或者姓名和photoURL的数据? 您可以在图像中看到我的数据库的结构。
我尝试使用queryOrdered和queryEqual,但我只能使用它一次
我试过这样,因为我知道room.key是数据库中的“关键”。
let refParticipants = refDatabase.child("markers").queryOrdered(byChild: "key").queryEqual(toValue: room.key)
refParticipants.observe(.childAdded, with: { snapshot in
...
}
我使用Swift 3.1
答案 0 :(得分:0)
我想您正在询问如何访问
的子节点/markers/oHQ.../members/9oBKY...
让我们简单介绍一下这个答案的结构
markers
marker_0
members
member_0
name: "J"
member)1
name: "K"
然后代码将访问成员节点中的每个成员并打印其名称
let markersRef = self.ref.child("markers")
let marker0Ref = markersRef.child("marker_0")
let membersRef = marker0Ref.child("members")
membersRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
let dict = snap.value as! [String: Any]
let name = dict["name"] as! String
print(name)
}
})
,输出将是
J
K
由于您知道父节点(oHQa ...),其中包含子节点'成员'因为您正在迭代,因此每个成员键的内容并不重要。它们。
但是,如果您想查询某些成员或其他成员数据,您可能需要考虑将数据库扁平化有点像这样
markers
oHQa...
//marker data
marker_members
member_0
name: "J"
member_of: "oHQa..."
member_1
name: "K"
member_of: "oHQa..."
使用此结构,您可以查询名称为" J"的所有成员的任何标记或查询的所有成员。等
作为旁注,在问题的结构中,您将member_id既作为键,也作为不必要的子项。如果它是密钥,那么您始终可以直接访问该节点而无需查询。