2017-08-12 3 views
0

Ich baue eine Express-App, und ich verwende Express-Validator (https://github.com/ctavan/express-validator).Körper fehlt auf Anfrage

Ich verwende es als Middleware:

export default function verifyLogin(req, res, next) { 
    req.checkBody({ 
     'email': { 
      notEmpty: true, 
      isEmail: { 
       errorMessage: 'Invalid Email' 
      }, 
      errorMessage: "Empty" 
     }, 
     'password': { 
      notEmpty: true, 
      errorMessage: 'Empty', 
      "isLength": { 
       options: [{min: 5, max: 20}], 
       errorMessage: "Password must be between 5 and 20 chars long" 
      } 
     } 
    }); 

    req.getValidationResult().then(result => { 
     if(!result.isEmpty()) { 
      res.send(result.array()); 
      console.log('In here, wrong params'); 
     } else { 
      next(); 
     } 
    }); 
} 

Aber wenn ich res.send(result.array()); zu res.status(422).send(result.array()); ändern den Körper der Anforderung fehlt, wenn ich es in der ersten Zeile nach der Funktion log (bevor ich req.CheckBody verwenden).

Ich bin völlig ahnungslos von dem Verhalten. Irgendwelche Hinweise?

Hinzugefügt: Ich bekomme einen leeren Körper, wenn ich eine Post-Anfrage von angular und mit res.status().send, senden, aber nicht vom Postboten. Wenn ich res.send() benutze - sowohl Postbote als auch eckige Werke.

Antwort

0

Das Problem war, dass Content-Typ in der angular2 App nicht angegeben wurde.

Aus irgendeinem Grund, wenn res.status() verwendet wurde, musste der Inhaltstyp angegeben werden, aber nicht, wenn res.send() verwendet wurde.