我有这样的Firebase结构。那么如何获取并打印出自动生成密钥及其索引的字符串呢?
我的代码但仍打印出10093
databaseReference.child("Message").child(senderId).child(receiverId!).observe(.value, with: { snapshot in
self.databaseReference.child("Message").child(self.senderId).child(self.receiverId!).child(snapshot.key).observe(.value, with: { (snap) in
print("aaa \(snap.key)")
})
})
我错过了什么或出了什么问题?请帮我解决。非常感谢
答案 0 :(得分:1)
请试一试。
databaseReference.child("Message").child(senderId).child(receiverId!).observe(.value, with: { snapshot in
if snapshot.childrenCount > 0 {
for users in snapshot.children.allObjects as! [DataSnapshot] {
print(users.key)
}
}
})
DataSnapshot
包含数据库位置的数据。它具有键和值属性。
答案 1 :(得分:1)
当您在firebase中观察到任何引用时,您将获得DataSnapshot
作为回报。 快照具有children
枚举器属性,您可以在其中枚举每个子项。每个孩子都是另一个DataSnapshot
。现在,每个快照都有key
和value
。你想要key
?只需使用key
属性:
let databaseRef = Database.database().reference(withPath: "Message").child("1577").child("10093")
databaseRef.observe(.value) { (snapshot) in
snapshot.children.forEach({ (child) in
if let child = child as? DataSnapshot {
let key = child.key
print(key)
}
})
}
答案 2 :(得分:1)
let databaseRef = Database.database().reference(withPath: "Message").child("1577").child("10093")
databaseRef.observe(.childAdded)
{ (snapshot:DataSnapshot) in
print(snapshot.key)
}