有没有办法从父实例动态获取子数据库,而不必使用childByAutoId()?
{
"artists" : {
"artists_id_1" : {
"name" : "Atif Aslam",
"genre" : "Rock"
},
"artists_id_2" : {
"name" : "Arijit Singh",
"genre" : "Rock"
}
}
}
我们通常会引用路径,并监听数据库中的项目......示例:
Database.database().reference().child("artists").child("artist_id_1").observeSingleEvent(of: .value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
print("\(String(describing: dictionary["name"] as? String))")
}
}, withCancel: nil)
它只适用于第一项。因为,它不会是动态的。通常使用的是以下示例...
{
"artists" : {
"-KeZUDrJv555kteAcssL-" : {
"name" : "Atif Aslam",
"genre" : "Rock"
},
"-KeZUVXFIQdO7JiyRYk-" : {
"name" : "Arijit Singh",
"genre" : "Rock"
}
}
}
Database.database().reference().child("artists").childByAutoId().observeSingleEvent(of: .value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
print("\(String(describing: dictionary["name"] as? String))")
}
}, withCancel: nil)
无论如何,我不知道是否清楚,在回答之前有什么可以发表评论。谢谢
答案 0 :(得分:1)
我不知道我是否理解你的问题或者你想要做什么,但也许你可以试试
Database.database().reference().child("artists").observe(.value) { (snap:DataSnapshot) in
// This should print out your childIds
print(snap.key)
// This should print out the values after them
print(snap.value)
}
答案 1 :(得分:0)
要显示数据库中的所有艺术家,请加载artists
节点并循环遍历snapshot.children
:
Database.database().reference().child("artists").observe(.value) { (snap:DataSnapshot) in
for child in snapshot.children {
print(child.key)
}
}
对于此示例和更多示例,我建议您阅读Firebase文档,特别是section on reading and writing lists。