如何从地图云firestore中删除某个字段?



我继续开发目录应用程序,现在我需要从云firestore中删除地图中的特定行。这是我的数据库:截图我需要删除字段与关键字"2324141"或者改变它的值。我知道这个方法:

"2324141": FieldValue.delete()

但是我如何进入映射和删除字段或更改值?谢谢!

这是我的对象模型:

class ObjectInFB: Codable {
var objectFromPartsCatalogueListCode: String?
var countOfCurrentObjectInShoppingCart: Int = 1}

这里是函数,我在用户购物袋中保存对象:

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中从购物车中删除一个对象。我只能从文档中删除任何字段,但是如何从嵌套的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")
}
}
}

如果目标是删除映射中的字段,则可以通过点表示法访问该字段。例如,假设您的结构看起来像这样

users
uid_0
UserEmail: "test@test.com"
shoppingCart  (a map)
2324141: 10
122323424: 13

,我们想要删除2324141字段。这是斯威夫特代码做

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")
}
}

最新更新