【问题标题】:retrieving data from auto id database child从自动 id 数据库子检索数据
【发布时间】:2019-07-06 11:08:49
【问题描述】:

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

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

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

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

这是我尝试过的: 第一

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

提前谢谢你:)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你是对的,对不起,我正在阅读你的答案,我不小心这样做了。
    • 我无法撤消它。如果你编辑你的答案,我会更正它。
    • 完成。没有难过的感觉?
    • 我做了你的解决方案,你写的打印是用钥匙和它的孩子打印整个孩子,但是当我要求给我 firstName 值时它打印为零,所以它似乎没有访问关键孩子并获取名字数据..希望这很清楚:\
    • @AliYousef,那么您可以使用 .childAdded 并从那里获取信息。请查看编辑。
    【解决方案2】:

    登录后需要使用当前用户名

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

    【讨论】:

    • 它说'使用未解析的标识符'currenUserId''
    • 谢谢,但我仍然不知道如何打印 firstName 值?我尝试了 snapshot.value["firstName"] 但不起作用
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 2016-05-23
    • 2023-03-12
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多