Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 在express validator中发生错误后停止执行流_Validation_Node.js_Express - Fatal编程技术网

Validation 在express validator中发生错误后停止执行流

Validation 在express validator中发生错误后停止执行流,validation,node.js,express,Validation,Node.js,Express,我正在使用expressvalidator对express中的请求对象进行表单验证。我做了如下工作: 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

我正在使用
expressvalidator
对express中的
请求
对象进行表单验证。我做了如下工作:

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');
问题是执行流会继续,在执行我的
User.create()
方法时,它会尝试呈现相同的资源两次。它还将抛出一个
错误:发送后无法使用可变头API。
,因为尝试了双重呈现

如何防止这种情况发生?

请参阅

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');