[英]How to remove a certain field from map cloud firestore?
我继续开发一个目录应用程序,现在我需要从 cloud firestore 中删除 map 中的特定行。这是我的数据库:截图我需要删除键为“2324141”的字段或更改其值。 我知道这种方法:
"2324141": FieldValue.delete()
但是如何进入 map 并删除字段或更改值? 谢谢!
这是我的 Object 的 model:
class ObjectInFB: Codable {
var objectFromPartsCatalogueListCode: String?
var countOfCurrentObjectInShoppingCart: Int = 1}
这是 func,我将 object 保存在用户 shoppingBag 中:
func addToUserShoppingCartFB(user: User?, object: ObjectInFB, count: Int){
guard let user = user else { return }
let objectReadyToBeWriten = [
"UserEmail":"\(user.email!)",
"shoppingCart" : ["\(object.objectFromPartsCatalogueListCode!)" : FieldValue.increment(Int64(count))]] as [String : Any]
db.collection("users")
.document("\(user.uid)")
.setData(objectReadyToBeWriten, merge: true)
{ err in
if let err = err {
print("Error adding document: \(err)")
} else {}
}
}
在应用程序中的购物车中的用户单击“从购物车中删除”后,我想从 Firebase 中的购物车中删除 object。我只能从文档中删除任何字段,但如何从嵌套的 ShoppingCart 中删除字段?
func removeShoppingCartFB(object: ObjectInFB, user: User?){
db.collection("users").document(user!.uid).updateData([
"shoppingCart": ["\(object.objectFromPartsCatalogueListCode!)" : FieldValue.delete()],
]) { err in
if let err = err {
print("Error updating document: \(err)")
} else {
print("Document successfully updated")
}
}
}
如果目标是删除 map 中的某个字段,则可以通过点符号访问它。 例如,假设您的结构如下所示
users
uid_0
UserEmail: "test@test.com"
shoppingCart (a map)
2324141: 10
122323424: 13
我们要删除 2324141 字段。 这是执行此操作的 Swift 代码
let myCollection = self.db.collection("users")
let myDoc = myCollection.document("uid_0")
myDoc.updateData( ["shoppingCart.2324141": FieldValue.delete(),
]) { err in
if let err = err {
print("Error updating document: \(err)")
} else {
print("Document successfully updated")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.