使用node.js将多个文件引用到数据库

我不明白如何使用Node.Js保存多个file upload到数据库的引用(文件名)。

我正在使用blueimp jqueryfile upload和multer中间件来执行多个file upload到本地存储(上传文件夹)。

<input id="fileupload" type="file" name="images" data-url="/record/edit/#{record.id}" multiple> 

app.js代码:

 //using multer to upload files const upload_images = upload.fields([{ name: 'featured_img', maxCount: 1 }, { name: 'images', maxCount: 8 }]); //... app.post('/record/edit/:id', upload_images, recordController.postUpdate ); 

recordController.js代码:

 exports.postUpdate = ((req, res, next) => { Record.findById(req.params.id, (err, record) => { if (req.files ) { console.log('UPLOADED') // record.featured_img = req.files['featured_img'][0].filename; //=> working for single file // Now, how to make it work for multiple files? console.log(req.files['images']) record.images = "HOW TO SAVE THE INFO OF REQ.FILES TO DB?"; } 

console.log输出:

 UPLOADED [ { fieldname: 'images', originalname: 'slippry-02.jpg', encoding: '7bit', mimetype: 'image/jpeg', destination: 'C:\\Users\\agaez\\Documents\\sanbox\\nodeApps\\theapp\\uploads', filename: '8mdnuacm1469201049450.jpg', path: 'C:\\Users\\agaez\\Documents\\sanbox\\nodeApps\\theapp\\uploads\\8mdnuacm1469201049450.jpg', size: 49798 } ] POST /record/edit/578580b43c7a08601730cc06 302 26.654 ms - 82 UPLOADED [ { fieldname: 'images', originalname: 'slippry-03.jpg', encoding: '7bit', mimetype: 'image/jpeg', destination: 'C:\\Users\\agaez\\Documents\\sanbox\\nodeApps\\theapp\\uploads', filename: 'yrnnzl9h1469201049467.jpg', path: 'C:\\Users\\agaez\\Documents\\sanbox\\nodeApps\\theapp\\uploads\\yrnnzl9h1469201049467.jpg', size: 49792 } ] 

更新

我使用MongoDB作为数据库和mongoose作为ODM

更多信息: curirly,我正在使用jqueryfile upload,这是2上传2张图片时,请求。 如果没有jqueryfile upload,它会为所有上传的图片发送1个请求,我得到req.files一个唯一的数组(上传所有文件)。 如何将这些信息保存到MongoDB?

recordModel.js

 //... images: String, //... 

你的'图像'属性看起来就像一个单一的string值,所以如果你正在寻找一个逗号分隔的string的url,最简单的事情就是引入Lodash并创buildstring,如下所示:

 record.images = _.map(req.files['images'], 'path').join(','); 

也就是说,我认为实际上你不需要一个单一的string,相反,你会做得很好(我认为)来定义一个ImageSchema,它包含你从req.files获得的一些或全部信息。 至less,我会拉path和mimeType,但其他信息可能对你有用,我不知道。 无论如何,鉴于你已经定义了一个ImageSchema,你可以这样做:

 const Image = mongoose.model('Image'); /* your upload stuff happens, and then */ record.images = _.map(req.files['images'], function(i){ return new Image(i);}); 

这当然假设你将你的RecordSchema更新为:

 ... images : [ImageSchema] ... 

希望有所帮助。