我正在尝试在Firebase上使用OnDelete触发器来实现我的云功能。但是,删除数据(channel_id节点)时不会触发。我目前的数据结构是这样的。
注意:user_id下面可以有多个channel_id,这个图像只是一个模式。我还运行以下代码来检查channel_id的节点是否被删除。
exports.deleteSubscriptionsFromFeed = functions.database.ref('/users_subscription/{userID}/{channelID}').onDelete(event => {
let channelID = event.data.previous.key;
let subscriberID = event.data.previous.ref.parent.key;
console.log(channelID);
console.log("here");
...
});
这不会被解雇,我试图找出如何使其工作。有关更多信息,我也正在运行这样的OnCreate函数,它确实会触发。所以我不确定为什么OnDelete不起作用。
exports.addSubscriptionsToFeed = functions.database.ref('/users_subscription/{userID}/{channelID}').onCreate(event => {
let channelID = event.data.key;
let subscriberID = event.data.ref.parent.key;
...
});
对此有任何帮助将不胜感激。
答案 0 :(得分:3)
为了访问onCreate,onUpdate和onDelete上的数据库触发器,您需要使用firebase-functions模块0.5.9或更高版本。在撰写本文时,最新的是0.6.0。请使用npm upgrade
更新您的模块,或者从package.json所在的函数目录中选择具有如下内容的特定版本:npm install firebase-functions@0.6.0
。
您可以通过Twitter上的@FirebaseRelease了解最新的Firebase相关功能。适用于Firebase的云功能处于测试阶段,因此您可以在添加新功能并修复错误时频繁更新。
此外,最新版本的firebase-admin是5.0.1,它是firebase-functions 0.6.0的依赖项。
答案 1 :(得分:0)
因此我们发现问题在于根节点更新时不会触发OnDelete。例如,我只是使用新字典设置user_id的值,而不是显式删除或将channel_id的值设置为null。