从自动ID数据库子级检索数据

时间:2019-02-12 18:13:44

标签: swift firebase firebase-realtime-database firebase-authentication swift4

我是快速编程的新手,我的情况是:

我有一个基于Firebase实时“查看图片”的数据库,我只想检索特定ID的firstNamelastName数据。

enter image description here

例如: 当我进入登录屏幕并使用以下电子邮件登录时:“ ali_y_k@hotmail.com ”,当进入下一个屏幕时,我想显示firstName和{{1 lastName中}}}在图片上显示的文本字段中

Log in Screen

HOme Screen

我尝试了几种解决方案,但问题始终是我无法输入随机ID子级来获取emailfirstName

我尝试过的是: 第一

func retriveInfo(){

lastName

这是从每个ID打印所有数据(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) } } firstNamelastName


第二

email

这将打印每个键“ Id”和所有信息

预先感谢您:)

2 个答案:

答案 0 :(得分:2)

由于您拥有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)
}

答案 1 :(得分:1)

登录后,您需要使用当前用户ID

let currentUserUid  = FIRAuth.auth()!.currentUser!.uid
let databaseRef = Database.database().reference().child("User_Informations/\(currentUserUid)") 
databaseRef.observeSingleEvent(of: .value, with: { (snapshot) in
}