使用GridFS在MongoDB中存储图像

时间:2016-03-11 05:15:29

标签: javascript node.js mongodb rest

我正在处理的网络应用程序功能允许用户上传图像以及一些表单数据。我们假设图像文件不会超过16MB,因此可以忽略GridFS(暂时)。

在我的React + Flux前端我利用FileReader对象将图像文件作为二进制字符串读取,然后将其附加到我的请求对象。这很丑陋但是有效......

My Node.js后端接收所述对象并插入我的MongoDB数据存储区。图像设置为' BinData'我的架构中的数据类型,表示二进制数据。当启动请求以检索包含图像Y的文档X时,请求很慢,但是对于单个文档检索是可管理的,因为我们只处理具有在客户端上转换的base64编码的一个缓冲器阵列。

现在我试图检索此类型的多个文档,但请求的执行时间非常长。要设置上下文,对大约1MB大小的4个文档(表示图像的大约996kb二进制数据)的单个请求大约需要6秒。

现在显然我可以添加分页来减少负载,但从只有4个文档的响应时间开始就像打一场艰苦的战斗。在这个问题上似乎没有多少指导,因为许多Stackoverflow问题都与存储图像有关,但实际上并没有以合理的速度接收它们。

根本问题是检索多个文档,每个文档包含一个图像。是否有一种直观的方式来存储和接收当前堆栈的图像文件,以改善响应时间?

如果需要完全重构我的实现,那么这种情况的最佳解决方案是什么?例如。用户上传信息+图像,存储数据,一次检索多个用户的多个实例。

提前致谢。

0 个答案:

没有答案