Функция Firebase document.update вызывает API несколько раз, используя Nodejs Express - PullRequest
0 голосов
/ 01 апреля 2020

Я использую 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 и только триггерный журнал из триггера, он оправдывается один раз.

Как извинить триггер только один раз в моей функции? Мой код неверный? Пожалуйста, помогите?

...