Я бы хотел присвоить документу новое значение, когда 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()
запускается без запускаэтот триггер снова?