Swift 3 和 Firebase:从快照中检索自动 ID 值
Swift 3 and Firebase: Retrieve auto id value from snapshot
我在 firebase 上创建了下面的结构,我需要获取带有红色下划线的自动 ID:
我创建的用于查询值的代码:
let query = reference.queryOrdered(byChild: "receiverId").queryEqual(toValue: "LKupL7KYiedpr6uEizdCapezJ6i2")
//Start process
query.observe(.value, with: { (snapshot) in
guard snapshot.exists() else{
print("Data doesn't exists")
return
}
print(snapshot.key)
}
我的“snapshot.value”的结果是:
Optional({
"-KaRVjQgfFD00GXurK9m" = {
receiverId = LKupL7KYiedpr6uEizdCapezJ6i2;
senderId = bS6JPkEDXIVrlYtSeQQgOjCNTii1;
timestamp = 1484389589738;
};
})
如何从上面的节点中只获取字符串 -KaRVjQgfFD00GXurK9m?
我曾尝试使用“print(snapshot.key)”,但它会导致用户 ID:
bS6JPkEDXIVrlYtSeQQgOjCNTii1
一些想法?非常感谢。
.value returns 父节点和所有满足查询结果的子节点。在这种情况下,需要迭代子项(可能有超过 1 个子项匹配查询)。
snapshot.key 是父节点键 (bS6JPkEDXIVrlYtSeQQgOjCNTii1),值是所有子节点的快照(字典)。这些子节点中的每一个都是 key:value 对 uid:value 并且值是子节点的字典、receiverId、senderId 等
此代码将为匹配查询的每个用户节点打印每个子节点的 uid 和值之一,时间戳。
let usersRef = ref.child("users")
let queryRef = usersRef.queryOrdered(byChild: "receiverId")
.queryEqual(toValue: "LKupL7KYiedpr6uEizdCapezJ6i2")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in
for snap in snapshot.children {
let userSnap = snap as! FIRDataSnapshot
let uid = userSnap.key //the uid of each user
let userDict = userSnap.value as! [String:AnyObject]
let timestamp = userDict["timestamp"] as! String
print("key = \(uid) and timestamp = \(timestamp)")
}
})
我在 firebase 上创建了下面的结构,我需要获取带有红色下划线的自动 ID:
我创建的用于查询值的代码:
let query = reference.queryOrdered(byChild: "receiverId").queryEqual(toValue: "LKupL7KYiedpr6uEizdCapezJ6i2")
//Start process
query.observe(.value, with: { (snapshot) in
guard snapshot.exists() else{
print("Data doesn't exists")
return
}
print(snapshot.key)
}
我的“snapshot.value”的结果是:
Optional({
"-KaRVjQgfFD00GXurK9m" = {
receiverId = LKupL7KYiedpr6uEizdCapezJ6i2;
senderId = bS6JPkEDXIVrlYtSeQQgOjCNTii1;
timestamp = 1484389589738;
};
})
如何从上面的节点中只获取字符串 -KaRVjQgfFD00GXurK9m?
我曾尝试使用“print(snapshot.key)”,但它会导致用户 ID: bS6JPkEDXIVrlYtSeQQgOjCNTii1
一些想法?非常感谢。
.value returns 父节点和所有满足查询结果的子节点。在这种情况下,需要迭代子项(可能有超过 1 个子项匹配查询)。
snapshot.key 是父节点键 (bS6JPkEDXIVrlYtSeQQgOjCNTii1),值是所有子节点的快照(字典)。这些子节点中的每一个都是 key:value 对 uid:value 并且值是子节点的字典、receiverId、senderId 等
此代码将为匹配查询的每个用户节点打印每个子节点的 uid 和值之一,时间戳。
let usersRef = ref.child("users")
let queryRef = usersRef.queryOrdered(byChild: "receiverId")
.queryEqual(toValue: "LKupL7KYiedpr6uEizdCapezJ6i2")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in
for snap in snapshot.children {
let userSnap = snap as! FIRDataSnapshot
let uid = userSnap.key //the uid of each user
let userDict = userSnap.value as! [String:AnyObject]
let timestamp = userDict["timestamp"] as! String
print("key = \(uid) and timestamp = \(timestamp)")
}
})