node.js - 如何创建图像数组并将其存储在mongodb中
问题描述
我想制作一个帖子提要 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
}
})
postfeed 控制器看起来像这样
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)
}
}
})
解决方案
根据文件大小,您可以采取多种方法,尝试使用数据类型为“ binData ”将图像存储到 mongoDB。如果文件大小超过 16mb,那么您需要开始查看GridFS:在此处输入链接描述,因为您要存储图像数组,然后检查这些有用的链接: 在此处输入链接描述并在此处输入链接描述
作为一个建议,如果您的项目具有云基础设施,那么将图像文件存储在 AWS S3 或 Azure blob 中并将相应的链接作为数组存储在 mongoDB 集合中将非常容易(我们正在做什么以及这些天更合适的实现),使用该 UI 可以从直接从云访问的提供的链接呈现这些图像。