我们使用firebase实时数据库和firebase函数。我们已经编写了一个DB触发器,用于每当更新用户时。在这种情况下,我们有一个推荐系统。因此,每当用户在他的帐户中添加一个推荐人时,这个触发器就会给推荐人一些奖励。因此,user_update更新触发器完成了这项工作。
这很有效。现在,每当更新用户时,我们需要再做一个不相关的活动。具体来说,我们希望保持迄今为止为分析目的向所有用户提供的总奖励。
那么,在一个更新触发器上实现两个独立操作的最佳方式是什么呢?
从技术上讲,我们可以将一个操作调用嵌入到另一个操作中,但这会让事情变得一团糟,尤其是在未来需要更多这样的操作时。
您有两个选项,要么像现在一样使用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 */ });