让客户端通过HTTP POST云功能(架构)将数据添加到Firestore

时间:2019-11-12 10:18:44

标签: firebase rest google-cloud-firestore

因此,我第一次使用Firestore和Firebase建立了一个网上商店,我也是NoSQL的新手。我遇到以下架构问题:当客户下订单时,客户将订购的产品直接发送到Firestore,后者将订单存储在集合raw_orders中。然后我的想法是在文档创建上创建一个Cloud Function触发器,该文档将对其进行处理并生成发票等。但是,我读到该函数调用可能会延迟10秒,我想使用一个同步解决方案。

相反,我的想法是创建一个HTTP Cloud Function,客户可以在其中发布订单,然后HTTP函数处理订单并将其推送到Firestore,然后该函数将orderID或其他内容返回给客户。由于用户不必直接与数据库对话,因此这种方法感觉更加安全。还解决了Firestore创建的触发功能可能会延迟的问题。

但是,我是Firebase的新手,我不确定这在结构上是否是首选方式。我建议的方法似乎更符合常规的旧REST API。

你怎么看?

谢谢!

1 个答案:

答案 0 :(得分:1)

听起来您肯定有一些服务器端代码和数据库操作,您不信任客户端执行。 (请记住,firestore安全规则是您唯一的保护-任何人都可以在这些规则中运行他们想要的任何代码,而不仅仅是您提供的代码。)

云函数可以为您提供准确的信息-并且由于您俩都希望操作是同步的(从客户端的角度来看),并且大概让客户端对进程中的错误做出反应,因此云功能可以使有很多使用上的意义。

以这种方式使用云功能在Firebase应用程序中很常见,即使它不是纯REST。

此外,如果您在客户端中更广泛地使用Firebase,则使用callable cloud function而不是http函数可能更自然,因为这将以更原生的方式处理参数的编组比原始HTTP请求可能要高。但是,您的情况尚不清楚,因为听起来您今天正在使用REST API。

请记住,有additional costs(或特定配额,具体取决于您的定价计划)来运行云功能。定价基于调用以及函数的CPU和RAM使用情况。