如何防止Firebase云功能“冲突”?

2024-05-03

我有一组具有基于时间的派生属性的对象。

我有一个 Firebase 云函数,它正在侦听创建和写入以计算属性,并且运行良好。

我还添加了一个通过 HTTP 触发的函数,例如 cron,在周日清晨重新计算属性(该属性每周都会更改)。

这工作正常,但每当 cron 函数更新属性时,第一个函数就会捕获写入并重新执行整个计算。

有没有一种简单的方法可以防止这种情况发生?我已经探索过为第一个函数设置环境变量来检测 cron 是否正在运行,但似乎无法在运行时设置环境变量。


您应该能够通过检查以前的值来防止这种情况。我会尝试提供一个例子

exports.yourFunction = functions.database.ref('/somepath/{someKey}').onWrite(event => {
  if (event.data.previous.val().time != event.data.val().time) {
    return;
  }
  else {
    // perform calculation
  }
 });

总之,如果先前的值与当前值不同,则变量time刚刚被你的其他功能改变了。你需要改变.time到你的变量名。

注意:这不会阻止函数触发,它只会阻止它再次执行计算。如果您根本不想触发该函数,则必须设计一种不同的方法来计算该值。比如只计算它onCreate然后使用 Cron 以设定的时间间隔更新值。正在听onWrite每次将数据写入 Firebase 时都会导致该函数触发。

您可以阅读更多有关Firebase 数据库触发器 https://firebase.google.com/docs/functions/database-events

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止Firebase云功能“冲突”? 的相关文章

随机推荐

  • Rust 中函数调用中的临时对象何时被删除?

    Rust 中函数调用内临时对象的作用域规则是什么 我真正感兴趣的是以下操作是否安全 fn foo gt CString fn bar arg const libc c char bar foo as ptr 我创建了最小的示例 它按照我想要
  • 使用 php 将 HTML 输出转换为纯文本

    我正在尝试将示例 HTML 输出转换为纯文本 但我不知道如何操作 我使用 file get contents 但我尝试转换的页面返回的结果最相似 raw http localhost guestbook profiles php file
  • Git Visual Studio 与 Bitbucket confluence 连接到现有项目错误/获取失败

    如何使用 Visual Studio 17 从现有 Bitbucket GIT 存储库中提取数据 Error git 因致命错误而失败 找不到 xyz 存储库 I added 这个迷雾 https marketplace visualstu
  • C# - 平移光标

    我正在 PictureBox 控件中实现大图像的平移 并且设置适当的方向平移光标没有问题 但是 我似乎找不到用于平底锅原点的图像 内部带有箭头的圆圈 我在哪里可以找到它 我觉得image您正在寻找的内容未包含在框架中 每个应用程序都使用自己
  • 无法使用 Spring.NET 将依赖项注入到 Azure WorkerRole 对象

    我在使用 spring net 4 0 和 nhibernate 3 0 开发基于 ASP net 的 Web 应用程序方面拥有一定的经验 最近我遇到了一种情况 我需要使用 spring net 来注入我的服务依赖项 这些依赖项属于Work
  • 无法从 setup-jest.js 找到模块

    我有一个 Angular 库 正在努力将其从 Angular 11 更新到 13 Jest 在 11 和 12 中运行良好 但现在我在 v13 中遇到了很多麻烦 我已经按照此处概述的步骤 https thymikee github io j
  • createNativeQuery 设置参数

    我有以下内容 其中包含 NativeQuery 我需要在其中设置参数 但有些事情是错误的 因为未设置参数 因此查询是 SELECT movieId title genres FROM movies where title like 所以返回
  • Perl 命令或模块,如 Linux“文件”命令

    我有一个下载文件的脚本 但这些文件在下载之前没有任何有关它们的信息 在为 Linux 编写代码时 我刚刚调用了qx file filename 查看它是否是 JPEG 图像 如果不是则将其删除 然而 我现在正尝试重写为独立于平台的纯 Per
  • 如何更改 Xcode 上的导航器字体大小

    有什么办法可以改变xcode中导航器面板的字体大小吗 我已设法使用 首选项 gt 字体和颜色 更改编辑窗口中的字体大小 但这不会更改导航器的字体大小 适用于 Xcode 12 及以上版本 Its default value is match
  • 每行中最后一次出现 True 的索引

    我有一个二维数组 a False False False False False True True True True True True True True True True True True True True True True
  • 使用 Jackson 作为 Jersey 客户端序列化器

    使用 Jersey Client API 时 是否可以使用 Jackson 作为 JSON 数据的序列化器 编组器而不是 JAXB 如果可以的话该如何配置呢 好吧 我发现了 原来很简单 ClientConfig cc new Default
  • oracle 计算两个字符串中连续匹配的单词

    我想要一个返回两个字符串中单词的顺序匹配数的查询 例子 Table Id column1 column2 result 1 foo bar live foo bar 2 2 foo live tele foo tele 1 3 bar fo
  • 参数为动态的 Spark 滞后函数

    我需要在spark中实现lag函数 我可以像下面这样做 使用 hive temp Spark 表中的一些数据 假设 DF 有这些行 lagno value 0 100 0 200 2 null 3 null 其中第一列是您要使用的实际滞后数
  • onActivityresult 数据为空

    这是我的相机应用程序 我想在其中捕获图像并裁剪它 但它拍照保存在我的 myimage 目录中 但不执行裁剪功能 请我需要帮助 我是这个领域的新人 这是我的相机开源代码 Intent intent new Intent MediaStore
  • 网站性能衡量

    我需要一个免费的工具来测量网站的性能 并且不需要对代码 jsp asp 页面 进行任何更改 感谢所有帮助 对于绩效衡量 我建议您YSlow http developer yahoo com yslow 它是一个 Firefox 插件 集成了
  • ORA-01741: 非法的零长度标识符

    您好 我在 shell 脚本中使用删除查询 并且遇到了这个问题 delete from WHITELIST CLI where filecode like Line Index condense Error ERROR ORA 01741
  • 有没有办法在 .NET Core 库中包含 .NET Framework 代码?

    我们有一个商业库 我正在努力将其移植到 NET Core 我想保留其中的几个调用 以便仅在以 NET 标准运行时使用 出于好奇 一组是读取 Windows 服务器上需要凭据才能访问的文件 有没有 该调用将告诉我是否在 NET Standar
  • 虚拟键盘(类似 Swype 键盘)Windows 窗体应用程序 C#

    我正在尝试使用 c 在 Windows 窗体中创建一个类似 swype 的键盘 我有两个问题 A 我无法重现手指滑动动作 b 我无法识别不同按键下的字母 对于第一个问题 我使用了 Graphics 类和 Pen 类 并像这样使用它 bool
  • Codeigniter 中的 HTML 格式的电子邮件

    如何在 codeigniter 中发送格式化的电子邮件 我有这段代码 可以很好地发送电子邮件 但它没有按应有的方式格式化它 您可以看到显示收到电子邮件的图片 function email sender this gt load gt hel
  • 如何防止Firebase云功能“冲突”?

    我有一组具有基于时间的派生属性的对象 我有一个 Firebase 云函数 它正在侦听创建和写入以计算属性 并且运行良好 我还添加了一个通过 HTTP 触发的函数 例如 cron 在周日清晨重新计算属性 该属性每周都会更改 这工作正常 但每当