Update child values in Firebase with Swift

16,686

You want to change the value of Places, which is the value in the child of child(uid).

let values = ["place": self.placeNameLabel.text]
let ref = FIRDatabase.database().reference().root.child("users").child(uid).updateChildValues(["Places": values])
Share:
16,686
user3708224
Author by

user3708224

Updated on June 07, 2022

Comments

  • user3708224
    user3708224 almost 2 years

    I am trying to implement updating Firebase database once a user taps on a button. When the user logs in (with Facebook in my case), a data structure is created successfully with the initial values in the data tree created.

    What I want to accomplish is once the user is in the app and they create a new item it saves it to the database, hence updates the values under one of the already created child values. See my code and screenshot for reference - thanks for any help!

    // user taps button to send item to be updated in Firebase data tree
    func confirmAddPlace() {
    
        // add place to tableview array
        let accessToken = FBSDKAccessToken.current()
        guard let accessTokenString = accessToken?.tokenString else { return }
    
        let credentials = FIRFacebookAuthProvider.credential(withAccessToken: accessTokenString)
        FIRAuth.auth()?.signIn(with: credentials, completion: { (user, error) in
            if error != nil {
                print("Something went wrong with our FB user: ", error ?? "")
                return
            }
    
        guard let uid = user?.uid else {
            return
        }
        // here is where i am having issues
        let ref = FIRDatabase.database().reference().root.child("Users").child(uid).child("Places")
        let values = ["place": self.placeNameLabel.text]
        ref.updateChildValues(values)
    })
    
        animateOut()
    }
    

    enter image description here

    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
            let placeID = place.placeID
            placesClient.lookUpPlaceID(placeID, callback: { (place, error) -> Void in
                if let error = error {
                    print("lookup place id query error: \(error.localizedDescription)")
                    return
                }
                guard let place = place else {
                    return
                }
            })
            let selectedPlace = place.formattedAddress
            if let name = selectedPlace as String!
            {
                self.placeNameLabel.text = "Are you sure you would like to add \(name) to your places?"
            }
        }