如何使用 Firebase 处理自动服务器端计算?

2023-12-20

也许我的问题应该重述为:如何将这些行为重构为 CRUD,这正是 Firebase 所擅长的?

我知道 CRUD 效果很好。我还了解 Firebase 声明式安全模型如何让我确保服务器端(它应该存在的地方)具有适当的安全性。

假设我有订阅服务。每次人们注册一项服务时,他们都需要自动将“到期”行项目添加到他们的帐户中。简单来说:

/users/john
/services/goodstuff

So john可以报​​名参加goodstuff,我可能会让他在 30 天内不付款,但会在 30 天到期时提醒他,“嘿,你需要付款,否则你会失去对商品的订阅。”

有了服务器后端,我会POST to /services/goodstuff/members,例如,有一部分POST处理程序将“您欠”行项目添加到john的帐户,确保任何人都无法加入goodstuff而不被标记为欠款。

在 Firebase BaaS 应用程序中,如果不存在这些服务器端逻辑,我将如何重构应用程序以获得相同的有效行为?


更新(2017 年 3 月 10 日): 虽然我在下面概述的架构仍然有效并且可用于将 Firebase 与任何现有基础设施结合起来,但 Firebase 刚刚发布Firebase 的云功能 https://firebase.google.com/docs/functions/,它允许您在 Google 服务器上运行 JavaScript 函数以响应 Firebase 事件(例如数据库更改、用户登录等等)。

一种潜在的解决方案(未经测试,抱歉;但这应该是正确的想法):

{
  "rules": {
    "users": {
      "$user": {
        /* When they create their user record, they must write a 'due' that's
         * within the next 30 days. */
        ".write": "!data.exists() && newData.child('due').isNumber() && newData.child('due').val() < now + (30*24*60*60*1000)"
      }
    },
    "services":
      "$service": {
        /* Must be authenticated and due date must not be passed. */
        ".read": "auth != null && now < root.child('users/' + auth.id + '/due).val()" 
      }
    }
  }
}

这要求当某人第一次登录并初始化其用户/条目时,他们必须在接下来的 30 天内写入截止日期。然后,当访问任何服务时,该到期日期将被验证为尚未过去。

也就是说,另一种选择是启动一个小型后端服务来处理此类业务逻辑。 Firebase 擅长保护、存储和同步数据。但如果您有复杂的业务逻辑,您可能需要考虑启动一个小型后端流程。 Firebase 有一个REST api https://www.firebase.com/docs/rest-api.htmlNode.JS https://www.firebase.com/docs/nodejs-quickstart.html and JVM https://www.firebase.com/docs/java-quickstart.html客户端,因此运行您自己的与 Firebase 集成的后端代码非常容易。

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

如何使用 Firebase 处理自动服务器端计算? 的相关文章

随机推荐