繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM