【问题标题】:Storing data in Firebase Real Time Database在 Firebase 实时数据库中存储数据
【发布时间】:2020-03-21 09:12:33
【问题描述】:

所以我正在尝试将一些数据存储到我的实时数据库中。我目前有两个单独的视图控制器,一个是供用户注册的,另一个是供用户选择他们的个人资料图像并能够更改该图像的。在注册页面上,我将“用户名”保存到 firebase,如下所示:

 let ref = Database.database().reference().root

                    let userObject = [
                        "username":fullname
                    ] as [String:Any]
                    ref.child("users/profile").child((result!.user.uid)).setValue(userObject)

对于个人资料图片,我保存了这样的数据

  func saveProfileImage(profileURL:URL, completion: @escaping ((_ url: URL?) -> ())){
        guard let uid = Auth.auth().currentUser?.uid else { return }
        let databaseRef = Database.database().reference().child("users/profile/\(uid)")
        let userObject = [
            "photoURL": profileURL.absoluteString
        ] as [String:Any]
        self.ref.child("users/profile").child(uid).setValue(userObject)
        }

我希望这两个数据都保存在用户 -> 个人资料 -> UID 下,并在 UID 下观察到“用户名”和“照片URL”的值。我现在唯一遇到的问题是,当我注册一个帐户时,它会将用户名正确保存在 UID 节点下,一旦我为用户保存配置文件图像,它就会保存在 UID 节点下,但会替换“用户名”节点。我想知道,如何将这两个数据保存在用户-> 配置文件-> UID 下,用户名和 photoURL 位于单独的视图控制器上。

【问题讨论】:

    标签: ios firebase firebase-realtime-database


    【解决方案1】:

    当您在某个位置调用setValue() 时,您会将该位置的所有数据替换为您指定的值。要改为更新现有数据,请使用updateChildValues

    比如:

    self.ref.child("users/profile").child(uid). updateChildValues(userObject)
    

    有关这方面的更多信息,请参阅 updating or deleting data 上的 Firebase 文档。

    【讨论】:

      猜你喜欢
      • 2019-09-06
      • 1970-01-01
      • 2019-01-22
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2021-05-24
      相关资源
      最近更新 更多