обновить атрибут документа, не вызывая onUpdate () с облачными функциями - PullRequest
0 голосов
/ 25 октября 2019

Я бы хотел присвоить документу новое значение, когда previousValue имеет определенное значение. Я мог бы выполнить firestore('collection').doc('id').update(newValue), но триггер сработал бы снова и был бы зациклен.

Я хотел бы создать бизнес-правило при изменении документа и обновить этот объект документа новым значением, но я нехотите снова вызвать функцию onUpdate().

export const onScheduleUpdated = functions.firestore
  .document('units/{unitId}/schedules/{scheduleId}')
  .onUpdate(async (change, context) => {

    const previousValue = change.before.data();
    const newValue = change.after.data();

    if (!newValue) { return; }

    if (previousValue && previousValue.status === 'inAttendance'
      && newValue.status === 'answered') {

      const hour = moment();
      const hourSchedule = moment(newValue.endHour);

      if (hour.diff(hourSchedule, 'minutes') <= 59) {
        newValue.endHour = moment().toDate();
      }

      /**
       * If I do it will be in a correct loop? I would like to create business rules within 
       * this function to change the value of the document without triggering the trigger again.
       */
      await firestore.collection('units').doc(context.params.unitId)
      .collection('schedules').doc(context.params.scheduleId).update(newValue);

    }
  });

Возможно ли обновить документ, присвоив новое значение атрибуту документа в тот момент, когда функция onUpdate() запускается без запускаэтот триггер снова?

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