2014-11-25 4 views
0

Я пытаюсь загрузить изображение в мой mongoDB как часть создания события. Это то, что я до сих пор:Сохранить данные изображения с Mongoose

Зонирование событие:

var mongoose = require('mongoose'); 
var Event = new mongoose.Schema({ 
    author: mongoose.Schema.Types.ObjectId, 
    authorName: String, 
    name: String, 
    priority: Number, 
    status: String, 
    date: Date, 
    img: { data: Buffer, contentType: String }, 
    description: String, 
    joinedUsers: [{ 
     username: { 
      type: String, 
      required: true, 
      index: { unique: true } 
     }, 
     petitionStatus: String 
    }] 
}); 

module.exports = mongoose.model('Event', Event); 

Мой вид нефрита:

form.form-signin(enctype="multipart/form-data",role='form',method='POST',action='/newEvent') 
    h2.form-signin-heading Create an Event 
    input.form-control(name='name', placeholder='Name of Event', required='', autofocus='') 
    textarea.form-control.event-description(placeholder='Please Enter a Description', name='description', required='') 
    input.form-control(name='date', type='date', required='') 
    input.form-control(name='img', type='file', required='') 
    button.btn.btn-lg.btn-primary.btn-block(type='submit') Create 

Экспресс API маршрут:

app.post('/newEvent',routes.createEvent); 

Моего метода сохранить событие

functions.createEvent = function(req, res){ 
    var author; 
    var name = req.param('name'); 
    var description = req.param('description'); 
    var date = req.param('date'); 

    UserSchema.findOne({ username: req.session.passport.user }, function(err, user) { 
     if (err) { 
      console.log(err); 
      res.status(404).json({status: err}) 
     } 
     if (user) { 
      author = user.getID(); 
      console.log(author); 

      var record = new EventSchema({ 
       name: name, 
       description: description, 
       date:date, 
       author:author, 
       authorName: req.session.passport.user 
      }); 

      record.save(function(err) { 
       if (err) { 
        console.log(err); 
        res.status(500).json({status: err}); 
       } else { 
        res.redirect('/userEvents'); 
       } 
      }); 
     } 
    }); 
}; 

Я располагаю 4 так bodyparser осуждается. Я был бы признателен, если бы кто-нибудь мог сообщить мне хороший способ реализовать загрузку изображения.

Заранее спасибо

ответ

0

тела анализатор не рекомендуется в экспресс-4, однако вы можете использовать Busboy вам просто нужно настроить приложение

app.use(busboy()); 

тогда образ будет доступен из запрос, как

exports.uploadDocument = function(req,res){ 
    var fstream; 
    req.pipe(req.busboy); 
    var doc = new DocumentModel(); // just a example use your own 

    req.busboy.on('file',function(fieldname, file, filename, encoding, contentType){ 
     doc.contentType = contentType; 
     doc.encoding= encoding; 
     doc.filename= filename; 
     file.on('data',function(data){ 
      doc.content = data; 
      doc.size = data.length; 
     }); 
    }); 
Смежные вопросы