【问题标题】:Can Firebase DB logic duplication be avoided with Google Cloud Functions?可以使用 Google Cloud Functions 避免 Firebase DB 逻辑重复吗?
【发布时间】:2017-07-18 08:19:50
【问题描述】:

为避免在各种应用(iOS、Android、Web)中重写 Firebase DB 逻辑,我们之前使用了服务/中间层来保存此逻辑。通过这种方式,应用程序永远不会直接与数据库交互。 但是,在具有 Firebase 和 Google Cloud Functions 的新架构中,通过 Cloud Functions 路由所有数据库调用是否明智,还是应该仅根据用例有选择地进行?

到目前为止,在我看到的几乎所有示例中,该应用都直接与 Firebase DB 交互,而 Cloud Functions 仅用于侦听某些事件并有选择地使用。它们并不意味着成为中间层。 然而,这种方法会导致需要在所有应用程序中复制数据库逻辑。这种重复代码可以避免吗?

【问题讨论】:

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


    【解决方案1】:

    是的。通过将某些功能从应用程序代码移动到 Cloud Functions 中,您只需实现一次该逻辑:在 JavaScript 中。这对于您不希望在客户端上使用的某些逻辑(太大、太隐秘、太慢等)非常有用。

    但是:

    • 每个客户端仍需要代码才能访问 Cloud Functions 中的功能。这可以像通过数据库 SDK 编写一样简单,但也可能涉及很多。
    • 只有当用户有网络连接时,该功能才可用。与客户端功能不同,它在用户断开连接/离线时将不起作用。

    【讨论】:

    • 谢谢弗兰克!如果您使用 Firebase 函数,您将失去实时数据库功能并转而使用常规 Web API 调用。正如您所指出的,仅对于不需要离线功能的功能和业务逻辑过于复杂的情况,我将使用 Functions。其他一切都可以直接转到 Firebase Db 以利用其实时功能。
    • “如果您使用 Firebase 函数,您将失去实时数据库功能并转而使用常规 Web API 调用。”不必要。如果您有一个数据库触发的云函数,它也将其结果写回数据库,客户端应用程序仍然可以是数据库客户端并获得实时更新。请参阅以下示例:firebase.google.com/docs/functions/…
    • 是的,写回数据库的数据库触发云函数将有助于利用实时功能。正如 Can Functions 文档中所提到的,这在需要对数据进行维护/额外处理的情况下很有用。但是,我认为对于大多数数据库操作 (CRUD),不应该通过写入队列来使用函数,以避免重写代码。最好直接使用客户端 Firebase SDK 来利用离线处理功能,即使这意味着分别为所有不同的客户端重写代码。
    猜你喜欢
    • 2010-10-13
    • 2021-11-27
    • 2017-10-03
    • 2021-03-29
    • 1970-01-01
    • 2020-08-12
    • 2020-03-15
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多