Javascript 上传到GCP存储器或使用bucket.getFiles()后,将文件名保存在DB中
我一直在StackOverflow中搜索,但似乎这个问题还没有被提出。这是一个关于文件上传到GCP存储的架构问题 TL;DR:直接(从服务器)使用bucket.getFiles()而不是将每个文件名存储在我的数据库中,然后逐个请求并将数组返回给客户端,有什么问题吗 情况: 我正在开发一项功能,允许用户上传与送货单链接的图像附件。此送货单可以有多个附件 我在客户端(移动设备)上使用一个简单的上传按钮,将GCP中的内容上传到Javascript 上传到GCP存储器或使用bucket.getFiles()后,将文件名保存在DB中,javascript,node.js,google-cloud-platform,architecture,upload,Javascript,Node.js,Google Cloud Platform,Architecture,Upload,我一直在StackOverflow中搜索,但似乎这个问题还没有被提出。这是一个关于文件上传到GCP存储的架构问题 TL;DR:直接(从服务器)使用bucket.getFiles()而不是将每个文件名存储在我的数据库中,然后逐个请求并将数组返回给客户端,有什么问题吗 情况: 我正在开发一项功能,允许用户上传与送货单链接的图像附件。此送货单可以有多个附件 我在客户端(移动设备)上使用一个简单的上传按钮,将GCP中的内容上传到path/to/id deliveryNote文件夹中,例如:path/to
path/to/id deliveryNote
文件夹中,例如:path/to/id deliveryNote/filename.jpg
path/to/id deliveryNote/filename2.jpg
等
在应用程序的其他地方,用户应该能够单击并下载每个附件
解决方案
在GCP中完成上传后,我问自己如何读取这些文件,并为用户提供文件的下载链接。这时我找到了:bucket.getFiles()
函数
由于我的文件路径都位于相同的id deliveryNote/
前缀之下,因此我利用bucket.getFiles(prefix)
的用法,在承诺解析后,可以安全地将可用链接列表返回给我的用户
问题
我不在数据库的deliveryNote表中存储文件名。这听起来有点问题,依赖GCP来了解一张送货单的附件。我的看法是,以我的方式,我不需要在数据库中复制信息(可能在两个位置处理故障),如果我需要这些文件,我会在GCP处请求GCP给我它们的链接。相反的想法是,存储名称,您将能够列出客户端的附件,然后在用户单击特定附件时生成下载链接
我的问题是:直接(从服务器)使用bucket.getFiles()是否存在问题,而不是将每个文件名存储在我的数据库中,然后逐个请求并将数组返回给客户端
可能影响所选方法的一些要点:
- 每次呼叫差异的GCP成本
- 无效的应用程序数据结构
- 其他事情