Мое приложение использует коллекцию 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 не так просто, как объявить ее, как я. Но как поступить? Я не нашел ничего в документации по облачным функциям.