我们正在使用firebase实时数据库和firebase函数。每当用户更新时,我们都会编写一个数据库触发器。在这种情况下,我们有一个推荐系统。因此,每当用户将推荐人添加到其帐户时,此触发器就会为推荐人提供一些奖励。因此,user_update更新触发器完成了这项工作。
这很好。现在,每当用户更新时,我们都需要执行另一项无关的活动。具体来说,我们希望将到目前为止的总奖励分配给所有用户,以用于分析目的。
那么,在单个更新触发器上实现两个独立操作的最佳方法是什么?
从技术上讲,我们可以将一个操作调用嵌入到另一个操作调用中,但这会变得像地狱般混乱,尤其是在将来需要更多此类操作时。
答案 0 :(得分:1)
您有两个选择,或者像现在这样使用1个实时数据库触发器,然后将逻辑放入该函数中。您可以通过将所有逻辑放在该触发器刚刚调用的单独函数中来使其整洁干净
或者您可以简单地创建另一个触发器,精确地确定您这次的操作方式,只需更改其导出名称即可,例如像下面使用这种方法,就意味着您有2个函数被调用,因此使成本加倍。
exports.userUpdate = functions.database.ref('/users/{uid}').onUpdate(async (change, context) => { /* LOGIC */ });
exports.userUpdateSecond = functions.database.ref('/users/{uid}').onUpdate(async (change, context) => { /* LOGIC */ });