从自动 ID 数据库子项中检索数据
retrieving data from auto id database child
我对 swift 编程有点陌生,我的情况是:
我有一个 firebase 实时数据库 "see picture",我只想检索特定 ID 的 firstName
和 lastName
数据。
例如:
当我在登录屏幕并使用此电子邮件登录时:“ali_y_k@hotmail.com
”,当转到下一个屏幕时我想显示 firstName
和lastName
email
在图片上显示的文本字段中
我尝试了几种解决方案,但问题始终是我无法输入随机 ID 子项来获取 firstName
和 lastName
这是我尝试过的:
第一个
func retriveInfo(){
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" 和所有信息
提前谢谢你:)
登录后需要使用当前用户id
let currentUserUid = FIRAuth.auth()!.currentUser!.uid
let databaseRef = Database.database().reference().child("User_Informations/\(currentUserUid)")
databaseRef.observeSingleEvent(of: .value, with: { (snapshot) in
}
由于您有 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)
}
我对 swift 编程有点陌生,我的情况是:
我有一个 firebase 实时数据库 "see picture",我只想检索特定 ID 的 firstName
和 lastName
数据。
例如:
当我在登录屏幕并使用此电子邮件登录时:“ali_y_k@hotmail.com
”,当转到下一个屏幕时我想显示 firstName
和lastName
email
在图片上显示的文本字段中
我尝试了几种解决方案,但问题始终是我无法输入随机 ID 子项来获取 firstName
和 lastName
这是我尝试过的: 第一个
func retriveInfo(){
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" 和所有信息
提前谢谢你:)
登录后需要使用当前用户id
let currentUserUid = FIRAuth.auth()!.currentUser!.uid
let databaseRef = Database.database().reference().child("User_Informations/\(currentUserUid)")
databaseRef.observeSingleEvent(of: .value, with: { (snapshot) in
}
由于您有 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)
}