Завершается ли ошибка update() в новом FlutterFire, если ссылка на документ не существует?

#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 или использовать транзакцию, чтобы проверить, существует ли документ, прежде чем обновлять его.