使用Swift更新Firebase中的子值 [英] Update child values in Firebase with Swift

查看:58
本文介绍了使用Swift更新Firebase中的子值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在用户点击按钮后实施更新Firebase数据库.当用户登录时(在我的情况下为Facebook),将使用创建的数据树中的初始值成功创建数据结构.

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()
}

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?"
        }
    }

推荐答案

您要更改Places的值,该值是child(uid)子级中的值.

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])

这篇关于使用Swift更新Firebase中的子值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆