【问题标题】:Realtime Database triggers executed multiple times on a value change?实时数据库触发器在值更改时多次执行?
【发布时间】:2019-01-10 22:10:35
【问题描述】:

是否保证实时数据库触发器在值更改后只执行一次? https://firebase.google.com/docs/functions/database-events

我的确切情况是:

  • 放置在数据库节点上的实时数据库触发器
  • 节点的值为“A”
  • 多个客户端并行触发云函数,将单个值“A”更改为值“B”。

虽然值从 A->B 仅更改一次,但如果可以多次执行 tigger(就像 PubSub 一样),我不会感到惊讶。有这方面的文档吗?

【问题讨论】:

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


    【解决方案1】:

    实际上不会更改任何值的数据库更新不应触发任何云函数,也不应触发该数据上的任何客户端侦听器。这是您可以很容易地自己测试的东西。

    如果您真的很担心,您可以随时自己比较函数中的更改快照,并在做任何工作之前提前返回。

    【讨论】:

    • 我知道,如果不进行实际更改,则不应触发触发器,我在这里指的是 Firebase 实时数据库 tiggers 提供的一般保证。例如,PubSub 触发器具有至少一次保证,因此它们可以针对单个帖子执行多次(并且确实发生了!)。我的函数不是幂等的,所以我不能让实时数据库触发器发生这种情况。
    • 这不是我阅读您的问题的方式。您介意编辑您的问题以根据实际问题重新表述吗?我读它时想知道对数据库的非更改更新(进行更新但实际上不进行更改的客户端)是否会导致调用数据库触发器。如果您有其他情况,请相应地询问。
    猜你喜欢
    • 2018-08-02
    • 2016-02-06
    • 1970-01-01
    • 2011-02-07
    • 2023-04-06
    • 1970-01-01
    • 2015-10-20
    • 2021-09-27
    • 2012-03-30
    相关资源
    最近更新 更多