gpt4 book ai didi

ios - 更新 firebase 中的数据而不覆盖以前的数据

转载 作者:行者123 更新时间:2023-11-29 05:26:54 25 4
gpt4 key购买 nike

我正在尝试将数据保存到 Firebase 中,但每次执行保存数据的代码时,以前的数据都会在 Firebase 中被覆盖。我尝试遵循这里的一些提示,但未能成功。

 fileprivate func saveSwipeToDataBase(didLike: Any) {
let swipeDate = Int(NSDate().timeIntervalSince1970)
guard let uid = Auth.auth().currentUser?.uid else { return }

guard let cardUID = topCardView?.cardViewModel.uid else { return }

let documentData = ["userSwipeId": uid,
"didLike": didLike,
"checked": 0,
"Swipe Date": swipeDate,
"type": SWIPE_INT_VALUE] as [String : Any]

self.postJobDataIntoDatabseWithUID(uid: cardUID, values: documentData as [String : AnyObject])

}
private func postJobDataIntoDatabseWithUID(uid: String, values: [String: AnyObject]) {
let ref = Database.database().reference(fromURL: "https://oddjobs-b131f.firebaseio.com/")
ref.observe(.childAdded, with: { (snapshot) in

let usersReference = ref.child("UserSwipes").child(uid)
usersReference.updateChildValues(values, withCompletionBlock: { (err, ref) in
if err != nil {
print("error saving data into firebase")
return
}

})
}, withCancel: nil)
}

我觉得问题似乎出在 updateChildValues 上,但我可能还很遥远。感谢您的任何和所有帮助。

最佳答案

如果您想将新的子节点添加到具有自动生成(并保证唯一)ID 的位置,您需要在该位置调用 childByAutoId()

因此,当调用 postJobDataIntoDatabaseWithUID 时,在 /UserSwipes/$uid 下添加一个新的 chid 节点

private func postJobDataIntoDatabaseWithUID(uid: String, values: [String: AnyObject]) {
let ref = Database.database().reference(fromURL: "https://oddjobs-b131f.firebaseio.com/")
let usersReference = ref.child("UserSwipes").child(uid)
usersReference.childByAutoId().setValue(values, withCompletionBlock: { (err, ref) in
if err != nil {
print("error saving data into firebase")
return
}
})
}, withCancel: nil)

与您的版本相比的更改:

  • 这不再添加观察者,因为您的新数据不依赖于任何现有数据,所以不需要观察者。
  • 现在调用 childByAutoId() 来生成新的子节点。
  • 然后调用 setValue() 来设置新子节点的值。
  • 该函数名为 postJobDataIntoDatabaseWithUID,修复了原始版本中的拼写错误。

关于ios - 更新 firebase 中的数据而不覆盖以前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58072597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com