2016-04-16 4 views
1

Ich erstelle eine MEAN-Stack-App mit Multer-s3, um Bilder in meine Datenbank hochzuladen. Allerdings, wenn ich die Upload-Funktion aufrufen, bekomme ich diesen Fehler:MULTER-S3: TypeError: Objekt kann nicht in primitiven Wert konvertiert werden ... diate [as _immediateCallback]

POST http://localhost:3000/api/upload/single 500 (Internal Server Error) 
TypeError: Cannot convert object to primitive valu…diate [as _immediateCallback](timers.js:354:15)↵", status: 500, config: Object, statusText: "Internal Server Error" 

In meinem Server-Seite app.js

// MULTER 
    var s3config = require('./config/s3'); 
    var upload = multer({ 
     storage: s3({ 
     dirname: s3config.dirname, 
     bucket: s3config.bucket, 
     secretAccessKey: process.env.AWS_ACCESS_SECRET, 
     accessKeyId: process.env.AWS_ACCESS_KEY, 
     region: s3config.region, 
     contentType: function(req, file, next) { 
      next(null, file.mimetype); 
     }, 
     filename: function(req, file, next) { 
      var ext = '.' + file.originalname.split('.').splice(-1)[0]; 
      var filename = uuid.v1() + ext; 
      next(null, filename); 
     } 
     }) 
    }); 

    // UPLOAD SINGLE FILE 
    app.post('/api/upload/single', upload.single('file'), function(req, res) { 
     var clothing_1 = { 
     type: req.body.type, 
     image: req.file.key 
     }; 
     console.log('req.body =' + req.body); 
     console.log('req.body.type =' + req.body.type); 
     console.log('req.file.key =' + req.file.key); 
     // get the user model User.findOne({ id: req.user._id }) 
     User.findOne({ _id: req.user._id }, {}, { new: true }, function(err, user){ 
     user.clothing.push(clothing_1); 
     // save this user 
     user.save(function(err, user){ 
      if(err) return res.status(401).send({ message: 'your error:' + err }); 
      else return res.json({ user: user }) 
     }); 
     }); 

    }); 

In meinem Front-end Controller:

self.uploadSingle = function() { 
    Upload.upload({ 
     url: API + '/upload/single', 
     data: { file: self.file, type: self.clothingType } 
    }) 
    .then(function(res) { 
     self.usersClothing = res.data.user.clothing.map(function(clothing) { 
      clothing.image = S3_BUCKET + clothing.image; 
      return clothing; 
     }); 
    }) 
    .catch(function(err) { 
     console.error(err); 
    }); 
    } 

Diese Funktion ist ausgeführt, wenn ich die Upload-Taste drücke.

+0

Nach Console.logs dem Fehler zu entfernen hat nicht geschaltet Eigenschaft lesen kann ' _id ' undefinierten –

+0

War nur eine Frage des Server innerhalb _doc nicht gab den Benutzer zu finden in der Lage, als req.body _ID. User.findOne ({_id: req.user._doc._id} hat das Problem behoben –

Antwort

0

War einfach eine Frage des Servers nicht in der Lage, den Benutzer als req.body zu finden gab _id inside_doc. Typeerror:

User.findOne({ _id: req.user._doc._id } fixed the issue 
Verwandte Themen