替换当前的Firestore文档

时间:2019-03-09 14:26:48

标签: ios swift google-cloud-firestore

我创建了一个程序,注册时最多可以输入6个人。一旦您在应用程序上在线,您就可以使用文本字段更改人员的姓名。然后,当我单击“保存”时,该程序将简单地将数据插入Firestore,但这就是发生问题的地方。

它将数据插入到新文档中,而不是当前文档中。这是一个问题。

那么我该如何使用Firestore替换文档?

这是我的代码:

 @IBAction func SaveData(_ sender: Any)
    {
        let authentication = Auth.auth().currentUser?.uid

        //Replacing persons
        db.collection("users").document(authentication!)
        .collection("Person").addDocument(data:
        [
           "Name1": person1.text!,
           "Name2": person2.text!,
           "Name3": person3.text!,
           "Name4": person4.text!,
           "Name5": person5.text!,
           "Name6": person6.text!
         ], completion: { (err) in
                    if err != nil
                    {
                        print("Error replacing persons!")
                        return
                    }
                    else
                    {
                        print("Succeded!")
                    }
            })
    }

当我用新文件“替换”数据时,它会创建一个新文件,而不是替换当前文件。我该怎么做?

1 个答案:

答案 0 :(得分:2)

每次调用addDocument时,Firestore都会创建一个新文档,正如函数名称所暗示的那样。要替换现有文档的内容,您必须:

  1. 参考该特定文档。
  2. 致电该参考文献上的setData()

假设您要更新名为Person1的文档中的名称:

db.collection("users").document(authentication!)
.collection("Person").document("Person1").setData([
   "Name1": person1.text!,
   "Name2": person2.text!,
   "Name3": person3.text!,
   "Name4": person4.text!,
   "Name5": person5.text!,
   "Name6": person6.text!
 ], completion: { (err) in
        if err != nil
        {
            print("Error replacing persons!")
            return
        }
        else
        {
            print("Succeded!")
        }
})

setting data for a document上查阅文档。您也可以更新文档,这意味着仅更改您指定的字段。有关更多信息,请参见同一文档页面中的update data