我创建了一个程序,注册时最多可以输入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!")
}
})
}
当我用新文件“替换”数据时,它会创建一个新文件,而不是替换当前文件。我该怎么做?
答案 0 :(得分:2)
每次调用addDocument
时,Firestore都会创建一个新文档,正如函数名称所暗示的那样。要替换现有文档的内容,您必须:
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。