Заменить текущий документ Firestore - PullRequest
0 голосов
/ 09 марта 2019

Я создал программу, в которой вы можете ввести до 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 Ответ

2 голосов
/ 09 марта 2019

Каждый раз, когда вы звоните 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!")
        }
})

См. Документацию up настройка данных для документа . Вы также можете обновить документ, что означает, что изменяются только те поля, которые вы укажете. Подробнее об этом см. обновление данных на той же странице документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...