Значения полей обновления Swift Firestore - PullRequest
0 голосов
/ 28 декабря 2018

В firestore мы добавили несколько полей без указания documentID (автоидентификатор).Мне нужно обновить определенное значение поля, например:

  1. У меня есть список личных данных в моей коллекции, который содержит имя, возраст и пол
  2. Мне нужно обновить определенныезначение поля где имя = kavin

вот мой проверенный код self.DBRef.collection("users").whereField("name", isEqualTo: "kavin") как обновить значение этого поля

1 Ответ

0 голосов
/ 28 декабря 2018

Из вашего вопроса неясно, ожидаете ли вы, что имя будет уникальным или если есть много пользователей с именем "kavin" .

Но если предположить, что имя пользователя уникально, вы можетерешить это следующим образом:

self.DBRef.collection("users")
    .whereField("name", isEqualTo: "kavin")
    .getDocuments() { (querySnapshot, err) in
        if let err = err {
            // Some error occured
        } else if querySnapshot!.documents.count != 1 {
            // Perhaps this is an error for you?
        } else {
            let document = querySnapshot!.documents.first
            document.reference.updateData([
                "age": 99
            ])
        }
    }

Вы должны сделать асинхронный запрос , который вернет QuerySnapshot , в результате которого будет массив документов.Полученный запрос не имеет понятия «уникальных» полей в ваших документах.Таким образом, вы должны понимать логику того, что это значит, если вы получаете более одного результата, когда имя должно быть уникальным.

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

...