我正在尝试使用 Express 和 Mongoose 对用户输入进行一些验证。以前,我直接在用户模型的“密码”字段上设置了一个“最小长度”验证器。它将检查输入的密码字符串是否足够长,如果不是,它将传递给尝试保存用户时创建的 ValidationError 对象。这将被发送回用户,并显示在适当的表单字段中。
但是现在我已经实现了散列、盐和加密,这并不能正常工作。密码的哈希版本比原始密码长得多。所以我想我可以做这样的事情:
exports.createNewUser = function(req, res, next){
var user = new User({
email : req.body.email
, name : req.body.name
})
, minLength = Validator.minLength(req.body.password);
if (!minLength) return next(new Error('Password aint right length'));
user.setPassword(req.body.password);
user.save(function(err){
if (!err) return res.redirect('/');
else {
console.log('error saving usr', err);
err['body'] = req.body;
return res.render('user/register', err);
}
});
};
问题是
return next(new Error('err message'));
简单地显示在控制台上。我需要某种方式将它附加到 mongoose Validation Errors 对象。有任何想法吗?