gpt4 book ai didi

swift - 如何在 Firestore (Swift) 中存储数据

转载 作者:行者123 更新时间:2023-11-28 06:00:07 25 4
gpt4 key购买 nike

我有一个使用 Cloud Firestore 的 iOS 应用,但在更新数据时遇到问题。我的目标是将 url 一个一个地添加到字典中,但我得到的只是重写一个值。我应该如何使用 setData 和 updateData?尝试不同的方式

storageRef.child("users/" + currentUser.value!.documentID + "/" + faceRef.documentID + ".jpg")
.putData(data!).observe(.success) { (snapshot) in

guard let downloadURL = snapshot.metadata?.downloadURL()?.absoluteString else { return }
let db = self.fsReference.document(self.currentUser.value!.documentID)
var dict = ["faces": ["": ""]]
dict["faces"] = ["newvalue\(downloadURL.hashValue)": downloadURL]

db.updateData(dict)
completion?()

这是我尝试过的。任何建议都会很好,提前致谢!

UPD:试图将我的字典移动到子集合,但在 .collection("newCollection").document("newdocument") 之后集合没有出现。可能是什么问题?

最佳答案

所以我看到的是您正在使用云存储来保存个人资料图片,并且您想保存这些图片的每个网址。您需要了解 setValue()updateValue() 做的几乎是同一件事。 updateValue() 的注意事项是,如果该文档尚不存在,它将创建该文档。因此,当在 Firestore 中更新值时,请理解它会将值设置为您提供的值,这起初可能会产生误导。

1st 更新任何文档时,首先要获取文档。如果人们不断更新不同的文档,您可能需要考虑使用 Firestore 事务:https://firebase.google.com/docs/firestore/manage-data/transactions#transactions这将确保您的数据得到正确更新。

2nd 将 URL 附加到数组,我不是你如何设置它,但我会设置 firestore 看起来像这样

"users" = [
"unique_id = "{
"firstname": "John",
"lastname": "Doe",
"unique_id": "document_id_here"
"faces": [ {key: value} ]
}
]

当你序列化那个对象时,你的面孔对象应该是这个[[String: Any]]

第三,最后一步是获取文档并仅更新该值

// Get the value in the completion with the data use this code
// Drill down to the property you want to update using the completion data ex.
var faces = completedData.faces
faces.append("[key: value]")


// Update the data back to firestore

let path = Firestore.firestore().collection("users").document("unique_user_id")

// Merging is so important. otherwise it will override your document
path.setData(["facesKey: faces"], merge: true) {(error in
if let error = error {
// good error handling here
}

// Successfully updated document

)}

关于swift - 如何在 Firestore (Swift) 中存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50089623/

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