我想制作一个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)
}
}
})
答案 0 :(得分:0)
您可以根据文件大小采取几种方法,请尝试将数据类型用作“ binData ”将图像存储到mongoDB。如果文件大小超过16mb,那么当您要存储图像数组时,需要开始研究 GridFS :enter link description here,然后检查以下有用的链接: enter link description here和enter link description here
作为建议,如果您的项目具有云基础架构,那么将图像文件存储在AWS S3或Azure blob中以及将各自的链接存储为数组在mongoDB集合中会非常容易(我们正在做的事情以及更合适的实现这些天),该用户界面可以从直接从云访问的提供的链接中呈现这些图像。