【问题标题】:Firebase How to display a specific children of a child unknown idFirebase如何显示孩子未知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 的一种更复杂的方式。结果将是相同的,但后者更惯用(并且更短)。

标签: ios firebase swift3 firebase-realtime-database


【解决方案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) 
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2023-02-25
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多