使用Gridfs或BSON将图像存储在MongoDB中



我是MongoDB的新手。我想将图像存储到数据库中。我知道有两种方法可以存储图像,一种是Gridfs,另一种是BSON。这两种实现的优缺点是什么?我所知道的唯一不同的是,BSON有16MB的大小限制。

我感到困惑的另一件事是如何使用任意一种方法来实现模型和API。任何建议都会非常有帮助!!

我有一个名为Image的模型,它有id、简要描述和实际图像。这是我的图像模型的代码。

const Image = mongoose.model('Image', {
imageID: {
type: mongoose.SchemaTypes.ObjectId,
required: true,
},
img: { 
<What should I put here? >
},
description: {
type: String,
required: false
},
})

我需要API来处理上传图像(将图像存储到数据库,按ID获取图像,按ID删除图像(。

这是我通过ID 获得的

app.get('/api/images/:id', async (req, res) => {

const result = Image.find({imageID: req.body.imageID})
if (id) {
res.send({result})
}
})

如果我的代码有问题,请随时指出!!

任何解释和例子都会非常有用!非常感谢。

MongoDB不是用来存储图像的,当然可以(非常有限(,但最好使用另一种解决方案,如Amazon S3或Google Cloud存储。

然后从这些存储的图像中获取url,并将该url作为字段存储在mongo文档中。您基本上将其用作指向图像的指针。

如果你真的想使用mongoDB,那么你需要使用一个好的视频,上传一个图像|用Node.js.创建一个REST API

再说一遍。我想重申,最好的方法是使用第三方来存储图像等大型文件。MongoDB的文档有大小限制。

此外,如果你打算使用Atlas远程存储这个数据库,那么这些图像将很快超过你的数据库限制。使用免费集群时,您的限制为500MB,因此除非您打算付费,否则最好使用其他集群。

最新更新