Google cloud firestore 为什么我要使用web SDK而不是Firestore的后端SDK?

Google cloud firestore 为什么我要使用web SDK而不是Firestore的后端SDK?,google-cloud-firestore,Google Cloud Firestore,通过阅读Firestore文档,我意识到您可以通过web应用程序(例如)直接与Firestore通信 这是否意味着我可以跳过后端进行简单的读/写操作,在需要计算的时候在中间使用后端?< /P> 我目前在MySQL上有一个Go后端。我想切换到NoSQL以改进整体架构 在我当前的后端中,我必须到处验证一些规则。我猜在web应用程序中使用这些规则可能是一个安全问题,因为它们可能被恶意更改 但在其他情况下,我的后端只是扮演中间人的角色:侦听api请求、检索数据、响应 这些线路都是很好的候选线路,可以直接

通过阅读Firestore文档,我意识到您可以通过web应用程序(例如)直接与Firestore通信

这是否意味着我可以跳过后端进行简单的读/写操作,在需要计算的时候在中间使用后端?< /P> 我目前在MySQL上有一个Go后端。我想切换到NoSQL以改进整体架构

在我当前的后端中,我必须到处验证一些规则。我猜在web应用程序中使用这些规则可能是一个安全问题,因为它们可能被恶意更改

但在其他情况下,我的后端只是扮演中间人的角色:侦听api请求、检索数据、响应

这些线路都是很好的候选线路,可以直接呼叫Firestore来替代。但对于其余部分,我想我仍然必须坚持使用后端来处理特定的案例

采用这种混合方法可以吗

有任何用例来阐明我对这个主题的想法吗


谢谢大家!

像您所描述的那样使用混合方法是很常见的,没有什么反对的

重要的是:

  • 您可以确保您的客户端只能访问其授权使用Firebase服务器端安全规则的数据
  • 使用Firebase的服务器端安全规则,确保客户端只能写入对应用程序有效的数据
然后,您可以使用服务器端代码(例如在云函数中)来执行您发现难以在客户端代码和安全规则中安全捕获的任何操作

我经常从尝试将所有代码都放在客户端开始,因为这会给客户端带来最好的离线体验。然后,我只在以下情况下决定将代码移动到云函数:

  • 代码需要访问秘密值才能执行其工作,例如支付处理网关的API密钥
  • 代码本身是一个秘密,例如用于游戏的作弊检测代码
  • 代码需要的资源(CPU、磁盘、网络)比我的许多客户机可能拥有的资源都要多,例如图像大小调整,或者更重要的是,使用恒定电源

Firebase在大多数情况下都有安全规则。如果要修改插入的数据,可以使用云函数触发器。感谢您的明确回答:)“因为这给了他们最好的离线体验”:我现在正在探索Firestore的功能,这与我最初的问题没有主要关系,但您的陈述似乎表明我可以依靠Firestore来缓存某种数据(或者我不应该再缓存)。目前,我正在提取数据并将其保存在本地存储中,以避免调用过多。我应该重新考虑我的工作方式吗?任何有助于我改变思维方式的链接/文档。显然,切换到NoSQL看起来很有希望,但也很新:)我知道我应该更详细地阐述这一部分。:)Firestore确实在设备上有一个本地缓存,如果用户未连接到后端,则用于所有读/写操作。如果您使用自定义后端,这不会自动发生,尽管您当然可以像以前那样构建自己的脱机存储。