在Firestore中更新文档的某些字段

时间:2020-08-05 06:57:19

标签: swift google-cloud-firestore

我正在尝试更新Firestore中文档的某些字段。下面是代码。但这不起作用。请帮帮我!

@IBAction func btnGoBack(_ sender: Any) {
    
    if usersPaid != true {
        
        let db = Firestore.firestore()
        db.collection("users").document("m8FdPX4zVJ77ZodP8h0T").updateData([
            "titlePage": titlePageOnChanged!,
            "endPage": endPageOnChanged!,
            "pageNumber": pageNumberOnChanged!,
            "passCode": passCodeOnChanged!
        ]) { err in
            if let err = err {
                print("Error updating document: \(err)")
            } else {
                print("Document successfully updated")
            }
        }
    }
    
        performSegue(withIdentifier: "goBack", sender: nil)

}

下面是firestore的屏幕截图。

a screenshot of firestore

3 个答案:

答案 0 :(得分:1)

您必须将document id从图片更改为Firestore document id

document("uDo1jHFTbMJSq4V5146X")

通常

您的代码必须类似于db.collection("users").document(yourUserId).updateData

自动写yourUserId比手工写要好:)

答案 1 :(得分:0)

您的问题在这里:

db.collection("users").document("userId").updateData([

具体在这里:

document("userId")

"userId"作为字符串不是文档ID。根据照片显示的文档ID为uDo1。...

答案 2 :(得分:0)

我用下面的代码弄清楚了:

        db.collection("users")
        .whereField("userEmail", isEqualTo: userEmail!)
        .getDocuments() { (querySnapshot, err) in
            if err != nil {
                print("Error updating document: \(err)")
            } else if querySnapshot!.documents.count > 0 {
                let document = querySnapshot!.documents.first
                document!.reference.updateData([
                    "titlePage": titlePageOnChanged!,
                    "endPage": endPageOnChanged!,
                    "pageNumber": pageNumberOnChanged!,
                    "passCode": passCodeOnChanged!
                ])
            }
        }