如何从孩子的 Firebase 获取数据?
Posted
技术标签:
【中文标题】如何从孩子的 Firebase 获取数据?【英文标题】:How to get data from Firebase in a child? 【发布时间】:2017-03-03 22:06:48 【问题描述】:我的数据结构是这样的:
通常应该有多个用户,所以我在频道 ID 中获得了更多地图。我想从该频道 ID 中的第一个人那里检索用户 ID。当使用指向我的频道 ID 的正确路径时,我尝试使用此方法检索用户 ID,首先遵循正常代码:
let firstChild = UInt(1)
self.channelRef?.queryLimited(toFirst: firstChild).observeSingleEvent
(of: .value, with: (snapshot) in
let value = snapshot.value as? NSDictionary
)
if let newCreator = snapshot.childSnapshot(forPath: "userID").value
print(newCreator)
let newCreator = value?.["userID"] as! String
let newCreator = value?["userID"] as? String ?? ""
if snapshot.key == "userID"
let newCreator = snapshot.value as! String
没有任何效果,主要是输出为零。这是快照的打印,然后是值的打印:
Snap (-KeLAUXw5juT1xBISOLA)
"-KeLCHhN3FPZ-chOE9MF" =
PictureVersion = 2;
readyToGo = 0;
userID = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
username = pietje;
;
Optional(
"-KeLCHhN3FPZ-chOE9MF" =
PictureVersion = 2;
readyToGo = 0;
userID = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
username = pietje;
;
)
如何获取用户ID?
编辑:似乎我得到的唯一“关键”是用户的随机 ID。我认为我需要从更深一层获取数据,但该怎么做呢?
【问题讨论】:
【参考方案1】:let user = value.allValues.first! as! NSDictionary
let userID = user["userID"] as? String ?? ""
虽然当快照中没有用户时这会崩溃,但请确保为此编写检查。这样做可能会更好。
self.channelRef?.queryLimited(toFirst: firstChild).observeSingleEvent(of: .value, with: snapshot in
let enumerator = snapshot.children
while let user = enumerator.nextObject() as? FIRDataSnapshot
guard let userValue = user.value as? NSDictionary else
return
let userID = userValue["userID"] as? String ?? ""
)
【讨论】:
以上是关于如何从孩子的 Firebase 获取数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 uid Firebase 数据库中获取电子邮件地址?
如何从 Firebase android kotlin 获取所有具有特定价值的孩子?