0

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

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

回答

0

是的。通过将应用程序代码中的某些功能移入Cloud Functions,您只需在JavaScript中实现该逻辑即可:这对你在客户端不需要的某些逻辑非常有用(太大,太秘密,太慢等)。

但是:

  • 每个客户端仍然需要在代码的函数云访问功能。这可以像通过数据库SDK写入一样简单,但也可以相当参与。
  • 该功能只有在用户有网络连接时才可用。与客户端功能不同,当用户断开/脱机时,它不起作用。
+0

谢谢弗兰克!如果您使用Firebase功能,则会失去实时数据库功能并回退到使用常规Web API调用。正如您所指出的那样,仅针对不需要离线功能的功能和业务逻辑太复杂的情况,我将使用函数。其他任何内容都可以直接转到Firebase Db以利用其实时功能。 –

+0

“如果您使用Firebase功能,则会失去实时数据库功能并回退到使用常规Web API调用。”不必要。如果您有一个数据库触发的云功能,并将其结果写回数据库,则客户端应用程序仍可以作为数据库客户端并获得实时更新。请参阅以下示例:https://firebase.google.com/docs/functions/use-cases#perform_database_sanitization_and_maintenance –

+0

是的,回写到数据库的数据库触发的云功能有助于利用实时功能。正如在可能功能文档中提到的那样,这在需要维护/额外处理数据的情况下很有用。但是,对于大多数数据库操作(CRUD),我认为不应该通过写入队列来使用函数,以避免重写代码。最好直接与客户端Firebase SDK合作以利用离线处理功能,即使这意味着要分别为所有不同的客户端重新编写代码。 –