首页 > 解决方案 > 从自动 id 数据库子检索数据

问题描述

我对快速编程有点陌生,我的情况是:

我有一个关于 firebase 实时“查看图片”的数据库,我只想检索特定 ID 的firstName和数据。lastName

在此处输入图像描述

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

登录屏幕

主屏幕

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

这是我尝试过的: 首先

函数检索信息(){

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”和所有信息

先感谢您 :)

标签: swiftfirebasefirebase-realtime-databasefirebase-authenticationswift4

解决方案


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

推荐阅读