Я использую FireBase и nodejs express. Я с помощью триггеров Cloud Firestore запускаю любые изменения в моем магазине Firebase, и pu sh изменяет остальные API. Мой код выглядит как
exports.triggerTimeStudent= functions.firestore
.document('users/{userId}/class/{classId}/students/{studentId}')
.onUpdate( (change, context) => {
const newValue = change.after.data();
const previousValue = change.before.data();
const {update_at: afterStatus} = newValue;
const {update_at: beforeStatus} = previousValue;
const {name: name} = newValue;
if (afterStatus !== beforeStatus) {
try {
var data = {
"student_name": name,
};
console.log(data);
console.log("Inside Rest API");
return rest.post("https://example.com/api/v1/student/add-by-name", {
...studentServiceRestOption, ...{
body: JSON.stringify(data)
}
});
} catch (error) {
return res
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.send(buildError({
code: errorCode.SYSTEM_ERROR,
message: error.message,
}))
}
}
Когда я изменяю поле: update_at в коллекции студентов из firebase, он запускается в облачной функции и создает пользователя в: https://example.com/api/v1/student/add-by-name по имени. Функция оправдывает успех, но оправдывает его два раза. Это оправдание и создание дублирующих данных. Он создает два одинаковых имени.
Пример: когда update_at в ученике коллекции из firebase получает имя от ученика коллекции с именем: ab c и вызывает api: https://example.com/api/v1/student/add-by-name. Но триггер вызывает извинения два раза
Но когда я удаляю вызов API и только триггерный журнал из триггера, он оправдывается один раз.
Как извинить триггер только один раз в моей функции? Мой код неверный? Пожалуйста, помогите?