我有一组具有基于时间的派生属性的对象。
我有一个 Firebase 云函数,它正在侦听创建和写入以计算属性,并且运行良好。
我还添加了一个通过 HTTP 触发的函数,例如 cron,在周日清晨重新计算属性(该属性每周都会更改)。
这工作正常,但每当 cron 函数更新属性时,第一个函数就会捕获写入并重新执行整个计算。
有没有一种简单的方法可以防止这种情况发生?我已经探索过为第一个函数设置环境变量来检测 cron 是否正在运行,但似乎无法在运行时设置环境变量。
您应该能够通过检查以前的值来防止这种情况。我会尝试提供一个例子
exports.yourFunction = functions.database.ref('/somepath/{someKey}').onWrite(event => {
if (event.data.previous.val().time != event.data.val().time) {
return;
}
else {
// perform calculation
}
});
总之,如果先前的值与当前值不同,则变量time
刚刚被你的其他功能改变了。你需要改变.time
到你的变量名。
注意:这不会阻止函数触发,它只会阻止它再次执行计算。如果您根本不想触发该函数,则必须设计一种不同的方法来计算该值。比如只计算它onCreate
然后使用 Cron 以设定的时间间隔更新值。正在听onWrite
每次将数据写入 Firebase 时都会导致该函数触发。
您可以阅读更多有关Firebase 数据库触发器 https://firebase.google.com/docs/functions/database-events
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)