ios - 如果我只是特别需要一个,为什么要获取所有用户数据?
问题描述
我正在尝试获取特定用户的图像 url,但我最终为我刚刚随机创建的两个用户获取了它。我只需要一个用户 ImageUrl,而不是两个。
func retrieveTheImage() {
let fullName = Database.database().reference(withPath: "User")
fullName.queryOrdered(byChild: "uid").queryEqual(toValue: "ghD0lYZV1QOeJ2giUc3fNVxsLAV2")
fullName.observeSingleEvent(of: .value) { (snapShot: DataSnapshot) in
for child in snapShot.children {
if let snap = child as? DataSnapshot {
if let snapShotValue = snap.value as? [String: String] {
let imageUrl = snapShotValue["ImageUrl"]!
print(imageUrl)
let storage = Storage.storage()
var reference: StorageReference!
reference = storage.reference(forURL: imageUrl)
reference.downloadURL { (url, error) in
let data = NSData(contentsOf: url!)
let image = UIImage(data: data! as Data )
self.pimageView.image = image
}
}
}
}
}
}
Firebase 结构
{
"User" : {
"Ncat5zlIHGQxRHEwGSX0vgspyE02" : {
"FirstName" : "other",
"ImageUrl" : "someUrl",
"LastName" : "other",
"uid" : "Ncat5zlIHGQxRHEwGSX0vgspyE02"
},
"ghD0lYZV1QOeJ2giUc3fNVxsLAV2" : {
"FirstName" : "other",
"ImageUrl" : "someUrl",
"LastName" : "other",
"uid" : "ghD0lYZV1QOeJ2giUc3fNVxsLAV2"
}
}
}
解决方案
这条线什么都不做:
fullName.queryOrdered(byChild: "uid").queryEqual(toValue: "ghD0lYZV1QOeJ2giUc3fNVxsLAV2")
对 API 的调用会query...
返回一个新的 Query 对象,因此您需要坚持下去:
let fullName = Database.database().reference(withPath: "User")
let query = fullName.queryOrdered(byChild: "uid").queryEqual(toValue: "ghD0lYZV1QOeJ2giUc3fNVxsLAV2")
query.observeSingleEvent(of: .value) { (snapShot: DataSnapshot) in
推荐阅读
- python - 从白色背景中提取前景图像
- javascript - 为什么我的侧载 Excel Javascript 加载项在外部浏览器中打开,而不是在任务窗格中打开?
- office-js - 我如何阅读outlook2013的附件?
- deep-learning - 在 onnx-runtime 的帮助下推断 LSTM 模型时出错。无效参数错误
- html - 我可以在浏览器中运行 Go 编译器吗?
- angular - 如果关闭,如何在角材料垫抽屉中隐藏组件
- python - 为什么会出现这个nameError
- bigcommerce - 必须从所有用户的视图中隐藏零件编号和 Sku
- reactjs - 加载 PIXI 纹理,处理失败
- python - 在python中切割window.open的一部分(网页抓取)