ios - 在 Firebase iOS SDK 中更新实时数据库对象

标签 ios swift firebase firebase-realtime-database

我有一个如下所示的数据库: enter image description here

我想更新比方说第二个用户,uid 为 5p3XT8TVFbVYNmFt0Kbu1ticaUT2 的用户,并将其名称更改为“James”。使用 iOS SDK 我可以做到:

let ref = Database.database().reference()
let id = 5p3XT8TVFbVYNmFt0Kbu1ticaUT2
let databaseQuery = ref.child("users").queryOrdered(byChild: "uid").queryEqual(toValue: id)

为了查询数据库,它会过滤掉除我要更改的用户之外的所有用户。但是这个查询现在将指向过滤后的用户列表,其中只包含我要更新的用户,而不是用户本身。所以如果我尝试

databaseQuery.ref.updateChildValues(...)

数据库看起来像这样:

enter image description here

我无法从 api 引用中理解如何直接找到被查询的 child 。我该怎么做?

最佳答案

您可以在值字典中设置要更改的值

func updateValues(){
    let ref = Database.database().reference()
let id = 5p3XT8TVFbVYNmFt0Kbu1ticaUT2

    let values = ["name": txf_Name.text ?? "", “email”: txf_email.text ?? "", “role”: txf_Role.text ?? ""]
    ref.child(id).updateChildValues(values, withCompletionBlock: { (error, ref) in
        if(error != nil){
            print(error?.localizedDescription ?? "")
            return
        }
        print("Values Updated")            

    })

}

关于ios - 在 Firebase iOS SDK 中更新实时数据库对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284517/

相关文章:

swift - 类型检查具有泛型类型的类

ios - 类型 'User'没有下标成员

java - 根据用户的 uid 获取其他用户的数据

java - 比较时间戳时的 Firestore 查询问题

ios - iOS 应用程序中的 Realm 文件大小

ios - iAd 横幅在 segue 上变白

ios - 如何在 Swift 中合并和格式化数组? (X 和 Y 坐标数组)

ios - 调用 updateChangeCount 时 UIDocument 自动保存不起作用

ios - NSKeyedUnarchiver.unarchiveObject 在 Today 小部件和主机应用程序之间从 UserDefaults 中选取数据时失败并出现错误

ios - 如何直接获取Firebase用户(fb auth)? (没有实时数据库引用)