Firebase 最佳实践:上传图像、执行服务器端检查、获取响应

Firebase 最佳实践:上传图像、执行服务器端检查、获取响应,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我想知道如何在Firebase中最好地执行以下场景: 发送一张图片和一些数据,特别是用户以前收到的上传代码(编辑:有100到1000个有效代码) 对数据执行服务器端检查。仅当上载代码有效时,才应存储图像(和相关数据) 向用户返回响应(成功或失败,即无效代码) 一种方法是使用定制的云函数来实现这一点,但其他帖子建议直接上传到云存储并在触发函数中执行检查更快/更高效。但是,我如何获得客户的成功/失败响应 编辑:目标平台是Web/JS。如果云功能由存储触发,您将使用云功能将响应状态(成功或失败)写

我想知道如何在Firebase中最好地执行以下场景:

  • 发送一张图片和一些数据,特别是用户以前收到的上传代码(编辑:有100到1000个有效代码)
  • 对数据执行服务器端检查。仅当上载代码有效时,才应存储图像(和相关数据)
  • 向用户返回响应(成功或失败,即无效代码)
一种方法是使用定制的云函数来实现这一点,但其他帖子建议直接上传到云存储并在触发函数中执行检查更快/更高效。但是,我如何获得客户的成功/失败响应


编辑:目标平台是Web/JS。

如果云功能由存储触发,您将使用云功能将响应状态(成功或失败)写入实时数据库的特定节点(或特定Firestore文档),并在该节点(或文档)的前端添加侦听器

您可能将其过度复杂化了—Firebase规则可以完成所有这些;仅当用户提供有效的、预先确定的“代码”且未能向用户返回响应时,才允许更新图像。然而,这个问题非常广泛,我们不知道你在使用什么平台。谢谢@Jay,没有想到使用规则。具体来看存储规则,似乎必须将有效代码列表“硬编码”到规则中。一旦代码列表增长到1000个或更多,这会成为一个问题吗?顺便说一句,目标平台是Web/JS。问题是有100到1000个有效代码,这意味着您已经有了它们的列表。您不会在规则中创建或存储它们,而是将代码(以及指向存储图像url的链接)存储在Firebase数据库中(例如),并且规则将验证用户输入的代码是否与数据库中的一个代码匹配。这将使您能够根据需要动态删除或添加代码,并将它们绑定到特定用户或一组用户。将代码保存在Cloud Firestore数据库中确实是理想的选择。但是管理图像上传的规则必须在云存储中实现,对吗?看看我不知道如何访问Firestore数据库,还是我遗漏了什么?你可以在整个项目中利用云Firestore,因为这是Firebase的发展方向,那么这将是正确的选择。我以数据库/存储为例,但是你可以用Firestore做同样的事情。谢谢雷诺,这似乎是可行的。据我所知,该序列类似于:-客户端使用UUID创建一个新文档。客户端将onSnapshot侦听器添加到文档中。-客户端将图像连同额外数据(包括文档id)作为自定义元数据上载到云存储。-云功能由上传触发,执行检查等,并更新响应文档。-客户端侦听器由更新触发,通知用户。-客户端删除文档---您是否会运行一些定期清理例程来丢弃可能留下的旧响应文档?这看起来很完美!请注意,当您说“客户端使用UUID创建新文档”时,可以让Firebase数据库/Firestore生成唯一id。