swift - 从自动 id 数据库子检索数据
问题描述
我对快速编程有点陌生,我的情况是:
我有一个关于 firebase 实时“查看图片”的数据库,我只想检索特定 ID 的firstName
和数据。lastName
例如:当我在登录屏幕并使用此电子邮件登录时:“ ali_y_k@hotmail.com
”,当进入下一个屏幕时,我想在图片上显示的文本字段中显示firstName
和lastName
email
我尝试了几种解决方案,但问题始终是我无法输入随机 ID 子项来获取firstName
和lastName
这是我尝试过的: 首先
函数检索信息(){
let databaseRef = Database.database().reference().child("User_Informations")
databaseRef.observe(.childAdded) { (snapshot) in
let snapshotValue = snapshot.value as! Dictionary<String,String>
let firstName = snapshotValue["firstName"]!
let lastName = snapshotValue["lastName"]!
let email = snapshotValue["email"]!
print(firstName,lastName,email)
}
}
这是从每个 id打印所有数据 ( firstName
, lastName
, )email
第二
func retriveInfo() {
let databaseRef = Database.database().reference().child("User_Informations")
databaseRef.observeSingleEvent(of: .value, with: { (snapshot) in
for snap in snapshot.children {
let userSnap = snap as! DataSnapshot
let uid = userSnap.key //the uid of each user
let userDict = userSnap.value as! [String:AnyObject] //child data
let firstName = userDict["firstName"] as! String
let lastName = userDict["lastName"] as! String
print("key = \(uid) First Name = \(firstName), Last Name = \(lastName)")
}
})
这将打印每个键“Id”和所有信息
先感谢您 :)
解决方案
由于您有 childByAutoId,您必须使用查询排序和查询相等。
let reference = Database.database().reference().child("User_Informations").queryOrdered(byChild: "email")
reference.queryEqual(toValue: "ali_y_k@hotmail.com").observeSingleEvent(of: .childAdded) { (snapshot) in
let dictionary = snapshot.value as! [String : Any]
let firstName = dictionary["firstName"]
print(firstName)
}
推荐阅读
- angular - 如何防止“重新加载站点”?警报?(角度 8,铬 75.0)
- python - 将 Azure Web 应用连接到 Azure Redis 缓存
- css - 仅在 IOS 中以字体显示的奇怪空间 - 是什么触发了这个?
- c# - 如何将 DataGridViewCellEventArgs 设置为已处理?
- mysql - 测试相互双边一对一连接
- python - 防止动画按钮在 on_press 或 on_release 上改变颜色(无 kv / Python 部分)
- python - OpenCV 无法在 init.py 中找到 cv2.Face 来分配识别器
- c# - 泛型作为参数,我做错了什么?
- ubuntu - 如何检查正在运行的服务的版本?
- javascript - d3 each() .method 这个上下文使用 TypeScript