2012-01-07 29 views
1

我正在使用express-validator對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

看到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

它應該是'在'if'聲明errors.length'。 – 2012-01-07 16:52:27

+0

@Josh史密斯:呃,對 – thejh 2012-01-08 00:00:14