我的用户表中有2条记录
下面的代码
let fcmTokenRef = Database.database().reference().root.child("users").child(id!).child("fcmToken")
fcmTokenRef.observe(DataEventType.value, with: { (snapshot) in
print(">>",snapshot)
})
将打印出孩子的令牌
如何调整代码以为所有孩子打印全部令牌?
答案 0 :(得分:1)
您请求一次读取,因此您只读取一次数据。您需要使用.childAdded
尝试一下:
let fcmTokenRef = Database.database().reference().child(“users”)
fcmTokenRef.observe(.childAdded, with: { (snapshot) in
print(">>",snapshot)
guard let data = snapshot as? NSDictionary else {return}
var each_token = data[“fcmToken”] as? String
print(“all tokens: \(each_token!)”)
})
@puf说了一些非常重要的内容: differences between child added and value firebase
在您查询的节点下,每个匹配的孩子都会触发child_add事件。如果没有匹配的子代,它将不会触发。
答案 1 :(得分:1)
您可以尝试
let fcmTokenRef = Database.database().reference().root.child("users").observe(DataEventType.value, with: { (snapshot) in
print(">>",snapshot)
let dic = snapshot.value as! [String:[String:Any]]
Array(dic.values).forEach {
let str = $0["fcmToken"] as! String
print(str)
}
})