我继续开发目录应用程序,现在我需要从云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")
}
}