云函数 :如何动态更改云还原触发器



我的应用程序使用 Firestore 集合"users/{userId}/alarms/2019/10",其中 2019 年是当前年份,10 是当前月份。我使用当此集合发生更改时调用的云还原触发器。

在下月初(11月(,我想监控"用户/{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。我观察到跟踪"用户/{用户}/警报/2019/10/{警报}的新Firestore Cloud触发器"。然后我在 Firestore 集合"users/a_user/2019/10"中创建了一个文档"foo",但似乎 monthAlarmsListener 从未执行,因为没有跟踪"用户a_user:更改警报 foo"。

我想动态定义一个新的云函数并不像我那样声明它那么简单。但是如何进行呢?我在云函数的文档中没有找到一些东西。

不可能从另一个函数的执行中动态部署一个函数。 如果需要另一个函数,则必须静态定义它并使用CLI部署它。 如果您确实需要为日期部分的各种组合提供不同的功能,听起来您最终会为每个可能的组合创建一个新函数,或者只是决定每次调用每个组合时如何处理每个组合。

最新更新