#firebase #flutter #google-cloud-firestore
# #огневая база #трепетание #google-cloud-firestore
Вопрос:
Я переношу свое приложение Flutter на новую версию Flutter Fire. Раньше, когда я хотел обновить документ, я бы просто использовал document(documentID).setData({}, merge: true)
, потому что я знаю, что setData будет нацелена на ссылку на документ, если она существует, и просто создаст ее, если ее нет, и merge: true
это позволило бы мне теперь заменить весь документ, если бы я просто хотел добавить одно или два поля или что-то в этом роде.
Теперь с новым FlutterFire вам нужно сделать document(id).set({})
, и нет возможности обойтись merge: true
без использования SetOptions(merge: true)
, что, по моему мнению, не является лучшей практикой (так же, как и мой предыдущий метод). Я хотел бы начать использовать document(id).update({})
, но я не хочу столкнуться с ошибками.
Итак, чтобы повторить мой вопрос сверху: выполняется document(id).update({})
сбой, если нет документа с указанным идентификатором?
Комментарии:
1. «я чувствую, что это не лучшая практика» Возможно, вы захотите либо объяснить, почему вы так себя чувствуете, либо пересмотреть это чувство.
Ответ №1:
Да, это потерпит неудачу. Документ должен уже существовать, чтобы обновление прошло успешно.
Если это не то, что вы хотите, то вам следует вернуться к использованию set с помощью merge или использовать транзакцию, чтобы проверить, существует ли документ, прежде чем обновлять его.