当前位置: 首页 > 面试题库 >

Firebase的云功能:增量计数器

邬安邦
2023-03-14
问题内容

使用事务使用实时数据库触发器来增加计数器是否可以接受?

exports.incPostCount = functions.database.ref('/threadsMeta/{threadId}/posts')
.onWrite(event => {
    admin.database().ref('/analytics/postCount')
    .transaction(count => {
        if (count === null) {
            return count = 1
        } else {
            return count + 1
        }
    })
});

问题答案:

绝对!实际上,这确实是此代码示例中的工作方式,尽管有一些小差异:

exports.countlikechange = functions.database.ref("/posts/{postid}/likes/{likeid}").onWrite((event) => {
  var collectionRef = event.data.ref.parent;
  var countRef = collectionRef.parent.child('likes_count');

  return countRef.transaction(function(current) {
    if (event.data.exists() && !event.data.previous.exists()) {
      return (current || 0) + 1;
    }
    else if (!event.data.exists() && event.data.previous.exists()) {
      return (current || 0) - 1;
    }
  });
});

值得注意的是,此示例根据创建还是删除子节点来处理增量和减量情况。



 类似资料:
  • 问题内容: 我已经看到了使用Cloud Functions引用实时数据库的增量计数器,但是还没有Firebase Firestore。 我有一个监听新文档的云功能: 我正在尝试上述交易,但是在终端中运行时出现此错误: 错误每个then()应该返回一个值或抛出promise / always-return函数预部署错误:命令以非零退出代码终止 这是我对任何node.js的首次尝试,而且我不确定我是否

  • 我看到Cloud Functions引用实时数据库的增量计数器,但还没有看到Firebase FiRecovery。 我有一个侦听新文档的云功能: 我正在尝试上述事务,但当我在terminal中运行时,我得到以下错误: error Each then()应该返回一个值或抛出promise/always return函数predeploy error:命令以非零退出代码1终止 这是我第一次尝试任何节

  • 问题内容: 尝试使用PayPal-node-SDK向Paypal的API请求 但我不断出错: 我尝试过的事情: 向完全不同的主机发出请求 将请求包装为 预先考虑到主机 问题是什么? 问题答案: 您需要按照付费计划进行外部API请求。 Firebase的Blaze计划(随用随付)为云功能免费分配。https://firebase.google.com/pricing/

  • 我知道这里已经有人问过这个问题,但它没有回答我的问题。我的问题是,我们怎样才能分解指数。js用于云函数,包括onWrite调用等。 我意识到您可以使用“要求”并引入外部代码。它仍然留下一些代码(例如,在Franks OCR示例中),在index.js. 理想情况下,我希望能够将整个onWrite事件触发器移动到另一个文件中。 索引中的示例。js: 如何将整个函数event watch/call移动

  • 问题内容: 我刚刚为Firebase实施了新的Cloud Functions,但是日志中有些东西让我感到困扰: 未配置结算帐户。无法访问外部网络,并且配额受到严重限制。配置计费帐户以消除这些限制 我实际上设法从外部网络访问该功能,所以我想知道我是否真的必须提供计费帐户?Firebase文档中对此没有任何内容。 我将Spark订阅计划用于个人测试,并且如果我不打算支付任何费用,则不想添加账单信息。

  • 我刚刚为Firebase实现了新的云功能,但日志中有一些让我烦恼的地方: 未配置账单帐户。外部网络无法访问,配额受到严格限制。配置帐单帐户以删除这些限制 我实际上设法从外部网络访问了该功能,所以我想知道我真的必须给我的账单帐户吗?firebase文件里没有这方面的内容。 我使用Spark订阅计划用于个人测试目的,如果我还不打算支付任何费用,我不想添加账单信息。