С конкретными примерами кода, которые вы показываете, использование транзакции дает мало преимуществ. Если обновление документа вносит статические изменения в документ без учета существующих данных , транзакция не имеет смысла. Транзакция, которую вы предлагаете, на самом деле является более медленной версией обновления, поскольку для внесения изменений она должна выполнить обход с сервером дважды. Обычное обновление использует только одну поездку в оба конца.
Например, если вы хотите добавить данные в строку, два клиента могут перезаписать изменения друг друга, в зависимости от того, когда каждый из них читает документ. Используя транзакцию, вы можете быть уверены, что каждое добавление вступит в силу независимо от того, когда добавление было выполнено, поскольку транзакция будет повторена с обновленными данными в условиях параллелизма.
Как правило, вам следуетСтарайтесь выполнять свою работу без транзакций, если это возможно. Например, предпочитайте использовать FieldValue.increment()
вне транзакции вместо ручного увеличения внутри транзакции.
Транзакции предназначены для использования, когда у вас есть изменения, которые нужно внести в документ (или, как правило, несколько документов)что должен учитывать текущие значения своих полей перед окончательной записью. Это не позволяет двум клиентам блокировать изменения друг друга, когда они фактически должны работать в тандеме.
Пожалуйста, прочитайте подробнее о транзакциях в документации , чтобы лучше понять, как они работают. Это не совсем похоже на транзакции SQL.