我不知道如何自定义注册表单验证错误消息。例如,向客户端弹出电子邮件形式不能为空的提示,而不是提醒客户端“缺少凭据”
我使用express-validator 5来验证输入格式,例如“ [check('email')。not()。isEmpty()。withMessage('电子邮件字段不能为空').isEmail()。withMessage('电子邮件不正确')]“, 但是, isEmail可以正常工作,但是isNotEmpty()不能工作。
如果我提交空白表格,请始终向我显示消息“缺少凭据”,我不再希望看到“缺少凭据”。我为之疯狂。我想刷新错误消息,例如“电子邮件字段不能为空或psw不能为空”! enter image description here
路线
router.post('/user/signup',
[check('email').not().isEmpty().withMessage('Email field can not be empty').isEmail().withMessage('Email not correct')],
passport.authenticate('local.signup', {
successRedirect: '/user/profile',
failureRedirect: '/user/signup',
failureFlash: true
}));
========================================
护照注册
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use('local.signup', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, function(req, email, password, done) {
// get errors messages
const errors = validationResult(req);
if(!errors.isEmpty()) {
var messages = [];
errors.array().forEach(function(error) {
messages.push(error.msg)
});
return done(null, false, req.flash('error', messages))
}
User.findOne({'email': email}, function(err, user) {
if(err) {
return done(err);
}
if(user) {
return done(null, false, {message: 'Email is already in use.'})
}
var newUser = new User();
newUser.email = email;
newUser.password = newUser.encryptPassword(password);
newUser.save(function(err, result) {
if(err) return done(err);
return done(null, newUser);
});
});
预期结果: 如果客户不输入电子邮件,我希望弹出“电子邮件字段不能为空”,而不是始终弹出“缺少凭据”。