我正在创建一个小型的MERN堆栈应用程序(使用Atlas数据库),用户可以在其中上传多个图像,然后在某种图库中查看它们。
当前,我使用GridFS上传图像。
问题是,当我尝试从数据库中获取单个图像时,直到获得响应之前,它花费了太多时间:对于一幅200x200的小图片,大约需要一秒钟的时间,通常需要50毫秒或更短的时间。 / p>
这是我获取图片的途径:
router.get('/photo/single/:filename', (req, res) => {
const bucket = new mongoose.mongo.GridFSBucket(mongoose.connection.db, {
chunkSizeBytes: 1024,
bucketName: 'uploads'
})
bucket
.openDownloadStreamByName(req.params.filename).pipe(res)
})
这里没有太多代码。
那么在我的情况下,openDownloadStreamByName
为什么工作如此缓慢?仅仅是因为我正在使用免费的M0群集,还是因为我的路线中缺少某些东西?或者,将图像存储在MongoDB中本身并不是一个好主意(但是我看不到其他解决方案,因为在我的情况下,图像的重量可以超过16MB)?
答案 0 :(得分:1)
我放弃了在MongoDB中存储文件的想法。相反,我在AWS S3上创建了一个存储桶,它工作正常。
答案 1 :(得分:0)
您好,请使用GridFS将图像和其他二进制数据存储在MongoDB Atlas中。