Облачные функции: как динамически изменить триггер Cloud Firestore - PullRequest
0 голосов
/ 07 октября 2019

Мое приложение использует коллекцию Firestore "users / {userId} / alarms / 2019/10", где 2019 - текущий год, а 10 - текущий месяц. Я использую триггер Cloud Firestore, который вызывается при изменении этой коллекции.

В начале следующего месяца (ноября) я хотел бы отслеживать "users / {userId} / alarms / 2019/ 11 / {alarm} ", и так каждый месяц. Я попробовал следующий код, который я развернул с помощью «firebase deploy --only functions».

exports.changeMonthAlarmsListener = functions.pubsub.schedule('0 0 1 * *').onRun((context) => {
    const currentDate= new Date();
    const year = currentDate.getFullYear();
    const month = currentDate.getMonth()+1;
    console.log('new Firestore Cloud trigger for users/{user}/alarms/%d/%d/{alarm}', year, month);

    exports.monthAlarmsListener = functions.firestore
    .document('users/{user}/alarms/'+year+'/'+month+'/{alarm}')
    .onWrite((change, context) => {
        console.log('user %s: change for alarm %s', context.params.user, context.params.alarm);
    });

    return true;
});

Я выполнил changeMonthAlarmsListener из консоли Cloud. Я наблюдал след "новый триггер Firestore Cloud для пользователей / {user} / alarms / 2019/10 / {alarm}". Затем я создал документ "foo" в коллекции Firestore "users / a_user / 2019/10", но кажется, что monthAlarmsListener никогда не выполняется, поскольку нет трассировки "user a_user: change for alarm foo".

Я думаю, что динамически определить новую функцию Cloud не так просто, как объявить ее, как я. Но как поступить? Я не нашел ничего в документации по облачным функциям.

1 Ответ

0 голосов
/ 07 октября 2019

Невозможно динамически развернуть функцию изнутри выполнения другой функции. Если вам нужна другая функция, вам придется определить ее статически и развернуть с помощью CLI. Если вам действительно нужны разные функции для различных комбинаций частей даты, похоже, что вы в конечном итоге создадите новую функцию для каждой возможной комбинации или просто решите с помощью одной функции, что делать с каждой комбинацией при каждом ее вызове.

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