我正在尝试使用云功能和Firebase存储来实现以下功能:
- 用户将CSV上传到前端
- 我将CSV保存到Firebase存储
- 云功能被触发
- cloud函数对CSV进行一些处理并创建一个新的CSV
- 新CSV保存到Firebase存储,并向前端发送一个响应,详细说明读取新CSV的位置
如何使用云功能实现这一点?我应该通过HTTP请求来触发函数,而不是使用云存储来触发函数吗?
处理此问题的过程如下:
- 首先将CSV作为数据blob/文件从客户端上传到用户上传目录
- 完成后,使用blob/文件的引用路径调用云函数OnCall
- Cloud函数加载存储项,并将其检查为CSV,根据硬编码或提供的任何特定参数对其进行解码
- 将新CSV保存到新的存储路径或覆盖它,然后:
- 生成下载URL并将其交给客户端,或者
- 将CSV内容作为响应直接传递给客户端(大小限制适用(
您可以使用onRequest
来执行此操作,但最好将onCall
用于客户端的上下文。此外,存储不支持Firebase Storage和Node,而是依赖于Google-Cloud-Storage
模块、链接源以及两个强烈建议用于Node/js环境的CSV解析器。
来源:
- https://firebase.google.com/docs/storage/web/upload-files#upload_from_a_blob_or_file
- https://firebase.google.com/docs/functions/callable#call_the_function
- https://cloud.google.com/storage/docs/reference/libraries
- https://www.npmjs.com/package/csv-parse
- https://www.npmjs.com/package/csv