【问题标题】:OnDelete Firebase Trigger Does Not FireOnDelete Firebase 触发器不触发
【发布时间】:2017-07-21 17:18:48
【问题描述】:

我正在尝试对 Firebase 上的 Cloud Functions 使用 OnDelete 触发器。但是,当数据(channel_id 节点)被删除时,它不会触发。我现在的数据结构是这样的。

注意:一个user_id下可以有多个channel_id,这个图片只是一个schema。我也在运行下面的代码来检查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;
  ...
});

对此的任何帮助将不胜感激。

【问题讨论】:

  • firebase-functions 节点模块是什么版本,如您的 package.json 中所示?
  • 它说我将 0.5.7 用于 firebase-functions,将 4.2.1 用于 firebase-admin

标签: javascript firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

为了访问数据库触发器 onCreate、onUpdate 和 onDelete,您需要使用 firebase-functions 模块 0.5.9 或更高版本。在撰写本文时,最新的是 0.6.0。请使用 npm upgrade 更新您的模块,或使用以下内容选择特定版本:npm install firebase-functions@0.6.0 从您的 package.json 所在的函数目录中。

您可以在 Twitter 上关注 @FirebaseRelease,了解最新的 Firebase 相关功能。 Cloud Functions for Firebase 处于测试阶段,因此随着新功能的添加和错误的修复,您可以期待频繁的更新。

此外,firebase-admin 的最新版本是 5.0.1,它是 firebase-functions 0.6.0 的依赖项。

【讨论】:

  • 谢谢!我刚刚运行它,但它看起来没有任何东西正在下载。我正在从 package.json 所在的函数文件夹运行 npm upgrade 。编辑:我分别运行 npm install firebase-functions@0.6.0 和 npm install firebase-functions@5.0.1 并下载。但是 package.json 文件不会改变版本号。你知道如何解决这个问题吗?
  • 它肯定应该改变 package.json。每当我更改版本时都会这样做。我不知道为什么它不会改变......
  • 我查看了文档,然后只运行了这两行代码:npm install --save firebase-functions 和 npm install -g firebase-tools。它没有更新到 0.6.0 或 5.0.1,这是否意味着它还没有发布?
  • nvm 我得到它来安装最新版本。 @doug-stevenson 即使使用最新版本的 OnDelete 也不会被解雇。
  • 我刚刚做了一个最小的测试,在路径 /foo/{id1}/{id2} 的 onCreate 和 onDelete 中记录了一条消息,当我将 /foo/x1/x2 设置为 true 时它们都被触发,然后将其删除。
【解决方案2】:

所以发现问题是更新根节点时不会触发 OnDelete。例如,我只是使用新字典设置 user_id 的值,而不是显式删除或将 channel_id 的值设置为 null。

【讨论】:

  • 这是更新,不是删除。删除意味着现在提供的位置没有数据。
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
相关资源
最近更新 更多