Сколько раз функция onUpdate сработает при пакетном обновлении? - PullRequest
3 голосов
/ 21 октября 2019

Я хочу обновить два поля в документе в коллекции под названием recipes, и я использовал пакетное обновление, чтобы сделать это:

let recipeRef = db.collection('recipes').doc(`${recipeId}`);
let batch = db.batch();
batch.update(recipeRef, {ratingsCount : admin.firestore.FieldValue.increment(1)});
batch.update(recipeRef, {totalRating : admin.firestore.FieldValue.increment(snap.data().rating)})
return batch.commit();

И у меня есть функция триггера в коллекции recipesкак это:

exports.RecipeUpdated = functions.firestore
.document('recipes/{recipeId}')
.onUpdate((change, context) => 
{
    //code
});

Мой вопрос таков: в вышеупомянутом пакете есть два обновления, будет ли это также дважды запускать функцию onUpdate Или, поскольку пакетная запись завершается атомарно, триггер будет вызываться только один? Я хочу, чтобы триггер вызывался только один раз.

1 Ответ

3 голосов
/ 21 октября 2019

Как упомянул @DougStevenson в своем комментарии, вам просто нужно запустить код и посмотреть поведение. Но обратите внимание, даже если вы используете один и тот же recipeRef, вы создаете два отличия обновления в вашем пакете. В этом случае вы получите, что onUpdate() сработает дважды.

Если вы хотите, чтобы вам звонили только один раз, вам следует , а не создать два разных обновленияВы можете создать один. update () Функция позволяет передавать несколько свойств, которые могут быть обновлены. Если вы используете объекты, чем просто получить ссылку на документ, получить его, внести изменения и записать его обратно.

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