我是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,因此除非您打算付费,否则最好使用其他集群。