我遇到了对Firebase函数事件缺乏理解的情况。为了使我的功能按预期工作,我为参考路径增加了更多的特殊性,然后我认为这是必需的。Firebase函数onCreate()onDelete()路径特异性
例如,我想增加或孩子被添加到或从该路径删除每次计数递减:
/invites
我用这些作为我的功能来实现:
functions.database.ref('/invites').onCreate(event => {
return admin.database().ref('/counter').transaction((current) => {
return (current || 0) + 1;
})
});
functions.database.ref('/invites').onDelete(event => {
return admin.database().ref('/counter').transaction((current) => {
if (current >=1) return (current - 1);
else return;
})
});
This是我根据我的路径:
:如果您设置的路径为你的功能/富/酒吧,它在这两个位置的匹配事件路径规范匹配所有触及路径的写入,包括发生在其下的任何写入。
/富/酒吧
/富/酒吧/巴兹/真的/深/路径
在我的情况下,/invites
将等于该例子中的/bar
。
但是,上述功能只会触发第一个孩子被添加到/invites
以及最后一个孩子被删除。在这两种情况之外,其他任何事情都不会触发计数器功能。我已经能够使这项工作的唯一方法是通过使用这个作为我的路径:
invites/{idOfInvite}
虽然我知道这会工作,我不知道,这正是我需要的。稍后我可能会决定在某个{idOfInvite}
的路径下添加新的数据,这会导致我的计数器函数触发(我认为?)。
这个SO answer表示我的函数的行为是预期的,但这不是我期望基于我对文档的理解。也许我错误地解释了文档?
正如你所看到的,我对这些添加/删除事件如何触发的理解有些偏离。