web-dev-qa-db-fra.com

Swift obtenir une valeur spécifique de la base de données Firebase

J'essaie d'obtenir une valeur spécifique de la base de données Firebase. J'ai consulté certains documents, tels que ceux de Google, mais je ne pouvais pas le faire. Voici le fichier JSON de la base de données:

{
    "Kullanıcı" : {
        "ahmetozrahat25" : {
            "E-Mail" : "[email protected]",
            "Yetki" : "user"
        },
        "banuozrht" : {
            "E-Mail" : "[email protected]",
            "Yetki" : "user"
        }
    }
}

Code rapide:

ref?.child("Kullanıcı").child(userName.text!).observeSingleEvent(of: .value, with: { (snapshot) in

    if let item = snapshot.value as? String{
        self.changedName = item
    }
})

Je veux obtenir la valeur E-Mail d'un utilisateur, pas de tout le monde. Comment puis je faire ça?

8
Ahmet Özrahat

Enfin j'ai trouvé une solution. Si je déclare une variable et que j'essaie de l'utiliser plus tard, il renvoie nil, mais si j'essaie d'utiliser snapshot.value as? String, c'est bon. Voici un exemple que j'ai fait.

    ref: FIRDatabaseReference?
    handle: FIRDatabaseHandle?

    let user = FIRAuth.auth()?.currentUser

    ref = FIRDatabase.database().reference()

    handle = ref?.child("Kullanıcı").child((user?.uid)!).child("Yetki").observe(.value, with: { (snapshot) in

        if let value = snapshot.value as? String{

            if snapshot.value as? String == "admin"{
                self.items.append("Soru Gönder")
                self.self.tblView.reloadData()
            }
        }
    })
6
Ahmet Özrahat

Dans votre code, l’instantané contiendra un dictionnaire de valeurs enfants. Pour y accéder, transformez snapshot.value en dictionnaire, puis accéder aux enfants individuellement en un tournemain (shot, lol)

ref?.child("Kullanıcı").child(userName.text!)
                       .observeSingleEvent(of: .value, with: { (snapshot) in

    let userDict = snapshot.value as! [String: Any]

    let email = userDict["E-Mail"] as! String
    let yetki = userDict["Yetki"] as! String
    print("email: \(email)  yetki: \(yetki)")
})
4
Jay

Ajoutez l'enfant "E-mail" à la requête.

ref?.child("Kullanıcı").child(userName.text!).child("E-Mail").observeSingleEvent(of: .value, with: { (snapshot) in

    if let item = snapshot.value as? String{
        self.changedName = item
    }
})
2
Rajesh73