繁体   English   中英

如何从 map cloud firestore 中删除某个字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM