2012-01-07 19 views
1

でエラーが発生した後、私はExpressでrequestオブジェクト上のフォームの検証を行うためにexpress-validatorを使用しています。停止実行フローエクスプレス・バリ

req.onValidationError(function(msg) { 
    res.render('signup', { error: msg }); 
}); 

req.check('email', 'Please enter a valid email.').len(1,256).isEmail; 
req.check('password', 'Your password must be at least 8 characters.').len(8,256); 

var user = { 
    email: req.body.email, 
    password: req.body.password 
}; 

User.create(user, function(err, result) { 
    console.log(err, result); 
}); 

res.render('signup'); 

問題はその実行フローcontinuseあり、そしてそれは私のUser.create()メソッドを実行しながら、二度同じリソースをレンダリングしようとします:私は、次のような何かを。また、理由未遂ダブルレンダリングのError: Can't use mutable header APIs after sent.をスローします。

これを防ぐにはどうすればよいですか?

答えて

1

は、それは `if`文で` errors.length`あるべきhttps://github.com/ctavan/express-validator#readme

var errors = []; 
req.onValidationError(function(msg) { 
    //res.render('signup', { error: msg }); 
    errors.push(msg); 
}); 

req.check('email', 'Please enter a valid email.').len(1,256).isEmail; 
req.check('password', 'Your password must be at least 8 characters.').len(8,256); 

if (errors.length) return res.render('signup', { error: errors.join('\n') }); 

var user = { 
    email: req.body.email, 
    password: req.body.password 
}; 

User.create(user, function(err, result) { 
    console.log(err, result); 
}); 

res.render('signup'); 
+0

を参照してください。 –

+0

@JoshSmith:ええと、右 – thejh

関連する問題