[英]Store image at MongoDB using Gridfs or BSON
我是MongoDB的新手。我想将图像存储到数据库中。 我知道有两种方法可以存储图像,一种是 Gridfs,另一种是 BSON。 这两种实现的优缺点是什么? 我知道的唯一不同是 BSON 有 16MB 的大小限制。
另一件让我感到困惑的事情是如何使用这两种方式来实现 model 和 API。 任何建议都会很有帮助!!
我有一个名为 Image 的 model,它有 ID、简要说明和实际图像。 这是我的图像 model 的代码。
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 那么你将需要使用 multer 一个很好的视频上传图片 | 用 Node.js 创建一个 REST API 。
再次。 我想重申最好的方法是使用第 3 方来存储大文件,例如图像。 MongoDB 对其文档有大小限制。
此外,如果您打算使用 Atlas 远程存储此数据库,那么这些图像将很快超过您的数据库限制。 使用免费集群时有 500MB 的限制,因此除非您打算付费,否则最好使用其他东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.