Arnav Kartikeya
Arnav Kartikeya

Reputation: 19

Retrieving user info from firebase

I know this question is asked a lot, but none of the solutions seem to be working for me(I have been trying multiple solutions from threads like Read data from firebase swift but it doesnt print anything to my console). I am trying to retrieve the type of user from my database, but I dont know how to.

func pushUserInfo(){
    let ref = Database.database().reference()
    let infoDict = ["First name": firstName.text!, "Last name": lastName.text!, "hours": 0, "isUser" : "user"] as [String : Any]
    let users = ref.child("users").child(username)
    users.setValue(infoDict)
}

The part that says ["type": "user"] has two options, either "user" or admin enter image description here

The screenshot above is of the Firebase realtime database. I am trying to retrieve the type of the user, but I have no idea how. Please help me figure this out, and if possible, explain the code, because I dont really understand too much about Firebase in general. I tried reading their firebase docs, but I still dont really get it.

Upvotes: 0

Views: 49

Answers (1)

I'm Joe Too
I'm Joe Too

Reputation: 5840

It looks like you're setting the data fine except that your username property appears to be a concatenated string of two optionals (maybe firstName.text and lastName.text. So this will make it impossible to query. The first step is to unwrap these into a string:

let username = "\(firstName.text!) \(lastName.text!)"

Once you've done that, you can query for that data like this:

let username = "\(firstName.text!) \(lastName.text!)"
let ref = Database.database().reference().child("users/\(username)")
ref.observeSingleEvent(of: .value, with: { (snapshot) in
  // Now you can access the type value
  let value = snapshot.value as? NSDictionary
  let type = value?["type"] as? String ?? ""
  }) { (error) in
    print(error.localizedDescription)
}

You may also want to reconsider having spaces in your property names (maybe use lastName instead of last name). It will be easier for your code later on.

Upvotes: 1

Related Questions