ios - Retrieving only current user's child values from Firebase -


edit, update @ bottom, still having issues


i have users stored in firebase - each user's values stored under uid (firauth.auth()?.currentuser?.uid):

"users" : {     "tzfhggkwlepzpu9gvko4xe1qky53" : {       "gender" : "male",       "handle" : "testhandle2",       "name" : "timothy",       "profilepicture" : "https://graph.facebook.com/*removed*/picture?type=large&return_ssl_resources=1"     }   } 

now user's info (to set user object use around app), have function:

func getuserinfo() {     let userref: firdatabasereference = firdatabase.database().reference().child("users")      // how specific user (current user only)??     userref.observesingleevent(of: .value, with: { (snapshot) in         let users = snapshot.value as! [string: dictionary<string, string>]         (key, value) in users {             guard let name = value["name"] else {print("error getting user name"); return}             guard let handle = value["handle"] else {print("error getting user handle"); return}             guard let gender = value["gender"] else {print("error getting user gender"); return}             guard let profilepicture = value["profilepicture"] else {print("error getting user profilepicture"); return}             print("\n\nname: \(name)\nhandle: \(handle)\ngender: \(gender)\nprofile picture: \(profilepicture)\n\n")         }     }) } 

however returns values users in db - want values current user.

what can add/change function ensure retrieves values current user, , not users? (i can make separate question if necessary seems relevant here), structure of storing each user's values children of uid way it? noticed lot of time in other examples stored under childbyautoid instead. i'm not sure advantage have.

thanks help!

edit:

if add child (uid) end of reference , cast [string : anyobject] dictionary, can current users values, parsing seems issue.

func getuserinfo() {      guard let uid = firauth.auth()?.currentuser?.uid else {print("error getting user uid"); return}     let userref: firdatabasereference = firdatabase.database().reference().child("users").child(uid)     self.currentuser?.uid = uid      userref.observesingleevent(of: .value, with: { (snapshot) in          if let usersdict = snapshot.value as? [string : anyobject] {             print(usersdict)             user in usersdict { //                    guard let name = user.value(forkey: "name") else {print("error getting user name"); return} //                    guard let handle = user.value(forkey: "handle") else {print("error getting user handle"); return} //                    guard let gender = user.value(forkey: "gender") else {print("error getting user gender"); return} //                    guard let profilepicture = user.value(forkey: "profilepicture") else {print("error getting user profilepicture"); return} //                    print("\n\nname: \(name)\nhandle: \(handle)\ngender: \(gender)\nprofile picture: \(profilepicture)\n\n")             }         }     }) } 

i error on each of user.value(forkey) lines, stating "cannot call value of non-function type anyobject".

if print(user.value) inside loop of current user's values perfectly. can't specify them individually.

you need add child userref

guard let uid = firauth.auth()?.currentuser?.uid else {         return     }  let userref: firdatabasereference = firdatabase.database().reference().child("users").child(uid) 

Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -