#google-cloud-firestore
# #google-облако-firestore
Вопрос:
Итак, эта функция работает наполовину:
API.FIRESTORE_DOCUMENT_USERID(userID: userID).updateData(["user_rating":FieldValue.arrayUnion([averageRating])])
Как вы можете видеть, я пытаюсь обновить user_rating
поле и передать средний рейтинг. Однако, поскольку средний рейтинг может составлять от 1 до 5, включая десятичные / двойные, существует вероятность того, что средний рейтинг уже будет существовать, т. Е. 1.5, 2.5, 2.7
и т. Д. Однако, похоже, я не могу слишком добавлять одно и то же значение дважды. Если я изменю рейтинг, то, конечно, я смогу добавить. Насколько мне известно, каждая запись в массиве имеет свой собственный идентификатор? Каким-либо образом я могу разрешить дубликаты?
Спасибо.
Ответ №1:
Найдено решение, вы должны сначала прочитать существующие данные в массиве, затем добавить любые данные, которые вы хотите, а затем еще раз обновить данные, например:
[YOUR_REFERENCE].getDocument { (querySnapshot, error) in
if let error = error {
print(error.localizedDescription)
} else {
var array:[THE_DATA_TYPE] = querySnapshot?.get("[FIELD_NAME]") as [THE_DATA_TYPE]
array.append([DATA_YOU_WISH_TO_APPEND])
querySnapshot?.reference.updateData(["[FIELD_NAME]" : array])
}
}
Я сделал его универсальным на случай, если кто-нибудь просто захочет скопировать и вставить.