从MongoDB加载图像缓慢

时间:2020-03-31 09:00:27

标签: node.js mongodb mongodb-atlas

我正在创建一个小型的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)?

2 个答案:

答案 0 :(得分:1)

我放弃了在MongoDB中存储文件的想法。相反,我在AWS S3上创建了一个存储桶,它工作正常。

答案 1 :(得分:0)

您好,请使用GridFS将图像和其他二进制数据存储在MongoDB Atlas中。

相关问题