2015-09-11 4 views
0

J'envoie des données de formulaire en plusieurs parties et les enregistre sur le serveur, mais les données sont en cours d'enregistrement sans aucune validation. Pour analyser les données, j'ai utilisé multiparty et express-validator pour valider les données, mais je sauvegarde les données sans aucune validation.Validation des données de formulaire multiparties analysées via multipart et validation via le validateur express

Pour envoyer ces données au serveur, j'utilise posman.

mon code sur le côté sever est la suivante

exports.signup = function(req, res) { 
    var form = new multiparty.Form(); 

    // Validation checks 
    req.assert('first_name', 'first name is required').notEmpty(), 
    req.assert('last_name', 'last name is required').notEmpty(); 
    req.assert('email', 'valid email is required').notEmpty().isEmail(); 
    req.assert('password', 'password field is required').notEmpty().len(6, 10); 

    var errors = req.validationErrors(); 
    if(!errors){ 
     form.parse(req, function(err, body , files) { 
      //////// 
      code to save the data on server goes here 
     }); 

    } 
    else if (errors) { 
     return res.status(400).send({ 
      'error': errors 
     }); 
    } 
}; 

Répondre

2

Actuellement, vous essayez de valider les champs du corps avant d'être analysés, ce qui est impossible. Vous devez déplacer vos lignes req.assert() et req.validationErrors() dans votre rappel form.parse(). Par exemple:

exports.signup = function(req, res) { 
    var form = new multiparty.Form(); 
    form.parse(req, function(err, body, files) { 
    if (err) 
     return res.status(500).end(); 

    req.body = body; 

    // Validation checks 
    req.assert('first_name', 'first name is required').notEmpty(), 
    req.assert('last_name', 'last name is required').notEmpty(); 
    req.assert('email', 'valid email is required').notEmpty().isEmail(); 
    req.assert('password', 'password field is required').notEmpty().len(6, 10); 

    var errors = req.validationErrors(); 

    if (errors) { 
     res.status(400).send({ 
     'error': errors 
     }); 
    } else 
     res.status(200).end(); 
    }); 
};