Firebase如何显示孩子未知ID的特定孩子

Posted

技术标签:

【中文标题】Firebase如何显示孩子未知ID的特定孩子【英文标题】:Firebase How to display a specific children of a child unknown id 【发布时间】:2018-01-04 14:24:45 【问题描述】:

我想访问孩子“members”的孩子“name”和“photoURL”的数据?您可以在图像中看到我的数据库的结构。 我的数据库的结构是这样的:

有一个用户可以显示标记的地图,这些标记是事件。我想在 tableView 中显示房间中的所有成员,除了创建这个房间的用户之外,创建标记并将其放在地图上的人是一样的。 我尝试使用 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

【问题讨论】:

仅供参考:这个refDatabase.child("markers").queryOrdered(byChild: "key").queryEqual(toValue: room.key).observe(.childAdded, with: snapshot in 只是表达refDatabase.child("markers").child(room.key).observe(.value, with: snapshot in 的一种更复杂的方式。结果将是相同的,但后者更惯用(并且更短)。 【参考方案1】:

查看您的数据结构,您似乎将密钥保存为字符串(例如:“128330”)。我不知道 room.key 是什么,但如果它不是字符串,我认为 .queryEqual(toValue: room.key) 不会起作用。

您可以通过运行以下查询来测试:

ref.child("markers").queryOrderedByChild("key").queryEqual(toValue: "128330").observeSingleEvent(of: .value, with: (snapshot) in
    print(snapshot) 
)

如果上面的查询不为空,那么你就发现了问题。如果这不起作用,请尝试将.childAdded 更改为.value

ref.child("markers").queryOrderedByChild("key").queryEqual(toValue: room.key).observeSingleEvent(of: .value, with: (snapshot) in
    print(snapshot) 
)

【讨论】:

以上是关于Firebase如何显示孩子未知ID的特定孩子的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase android kotlin 获取所有具有特定价值的孩子?

如何在 Firebase 中获得上孩子?

如何从孩子的 Firebase 获取数据?

我似乎不能只是从 firebase 数据库中引用用户 ID 下的孩子

如何从 Firebase 加载孩子

如何在firebase数据库中获取所有孩子的数据?