Обновление 10 разных полей одного и того же документа в Firestore. Имеет ли значение заказ? - PullRequest
0 голосов
/ 07 февраля 2020

Я буду запускать 10 обновлений для разных полей одного документа в Firestore.

someDocRef.update({
  [field_1]: "value1"
});

someDocRef.update({
  [field_2]: "value2"
});

And so on...

Что в действительности произойдет:

// PSEUDO CODE

1. An admin script will update 10 documents

2. A cloud function with a Firestore trigger will run 10 times 
because of those 10 doc updates

3. On each run, that cloud function will fire an update for a 
different field of the SAME DOCUMENT

ВОПРОС

Облачная функция будет запускаться 10 раз и обновлять 10 различных полей одного и того же объекта. Я не могу быть на 100% в каком порядке это произойдет, верно? Имеет ли значение порядок этих 10 обновлений? Я знаю, что будет иметь значение, если обновление должно быть сделано для того же поля, но в этой ситуации каждое обновление будет в другом поле. Нужно ли делать это как транзакцию?

1 Ответ

1 голос
/ 07 февраля 2020

Невозможно гарантировать порядок выполнения для любого фонового триггера облачной функции, который происходит в ответ на события, происходящие в других продуктах, включая обновления документа Firestore.

Я могу ' Определите, имеет ли заказ значение для вашего приложения, - решать вам.

Попробуйте вместо этого выполнить все изменения в одном обновлении. Вам не нужна транзакция для обновления нескольких полей в одном документе. API позволяет обновлять несколько полей за одно обновление. Транзакции и пакетная запись используются, когда вы хотите воздействовать на несколько документов одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...