Мой простой код не работает с экспресс-валидатором - PullRequest
0 голосов
/ 28 декабря 2018

Я изучаю экспресс-валидатор.
«router.post» проходит без проверки
Я ввел форму и пароль в html.

<body>
    <h1>Hello Guys!</h1>
    <p>Fill in your id number.</p>
    <form action="/yournumber/sub" method="POST">
        <input type="password" name="password">
        <button type="submit">Summit</button>
    </form>
</body>



И этот пароль вызывает router.post
Это мой код маршрутизатора.
, но этот пост запускает перенаправление независимо от длины пароля.
Как я могу правильно сделать?

    router.post('/yournumber/sub', (req, res, next) => {
    req.check('password').isLength({min: 4});

    var errors = req.validationErrors();
    if (errors) {
      req.session.errors = errors;
      req.session.success = false;
      console.log('error');
    } else {
      req.session.success = true;
      console.log('suc')
    }

    res.redirect('/ab');
});

1 Ответ

0 голосов
/ 28 декабря 2018

Я не знаю примечание req.check() и не могу найти его в официальной документации , , но :

Как я использую этоМодуль как экспресс-связующее ПО.Вы можете проверить отсканированную на связанной документации.Вот ваш адаптированный код:

const validation = [
  check('password').isLength({min: 4})
];

router.post('/yournumber/sub', validation, (req, res, next) => {
  var errors = validationResult(req);
  if (errors.isEmpty()) {
    // valid
  } else {
    // not valid
  }
});

Как видите, массив validation передается в качестве другого обработчика для маршрута.Он работает так же, как ваш обработчик:

  1. Проверьте, является ли параметр действительным, как указано для check() -функции
  2. Если нет, добавьте информацию в req-объект
  3. Позвоните next(), чтобы перейти к следующей проверке или к вашему обработчику.

Затем, когда вы хотите проверить результаты, используйте validationResult() (который вы написалинеправильно и вызывается как метод req вместо передачи его методу).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...