如何创建图像数组并将其存储在mongodb

时间:2019-07-25 13:30:08

标签: node.js mongodb

我想制作一个post feed nodejs应用程序,用户可以在其中上传最多10张带有简短说明的图像,就像instagram和facebook。我可以使用express-fileupload npm包存储图像,但是如何创建该图像的数组并将其存储到mongodb中。

我制作了一个看起来像这样的PostSchema

var postSchema = new schema({
    username: {
        type: String
    },
    photos: {
        type: Array
    },
    videos: {
        type: Array
    },
    likes: {
        type: Array,
    },
    description: {
        type: String
    }
})

和后馈控制器看起来像这样

router.post('/post', verifyToken, (req, res) => {
    var description = req.body.description
    var email = req.body.email

    if (req.files) {
        var file = req.files.photos;
        for (let i = 0; i < file.length; i++) {

            var path = appRoot + '/uploads/posts/' + req.user._id
            fs.mkdir(path, () => {})
            var postImages = path + '/' + file[i].md5 + '-' + Date.now() + '.png'
            file[i].mv(postImages)
        }
    }
})

1 个答案:

答案 0 :(得分:0)

您可以根据文件大小采取几种方法,请尝试将数据类型用作“ binData ”将图像存储到mongoDB。如果文件大小超过16mb,那么当您要存储图像数组时,需要开始研究 GridFS enter link description here,然后检查以下有用的链接: enter link description hereenter link description here

作为建议,如果您的项目具有云基础架构,那么将图像文件存储在AWS S3或Azure blob中以及将各自的链接存储为数组在mongoDB集合中会非常容易(我们正在做的事情以及更合适的实现这些天),该用户界面可以从直接从云访问的提供的链接中呈现这些图像。