如何验证注册表单不能为空

时间:2019-04-05 00:47:40

标签: node.js passport.js

我不知道如何自定义注册表单验证错误消息。例如,向客户端弹出电子邮件形式不能为空的提示,而不是提醒客户端“缺少凭据”

我使用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);
    });
  });

enter image description here

预期结果: 如果客户不输入电子邮件,我希望弹出“电子邮件字段不能为空”,而不是始终弹出“缺少凭据”。

0 个答案:

没有答案