Как получить ошибки проверки с помощью expres-validator? - PullRequest
0 голосов
/ 01 мая 2019

Я только начал изучать экспресс-валидатор.Я прочитал документы по экспресс-валидатору, но мой вопрос может иметь ответ в этих документах, который я не совсем понимаю.Я хочу проверить некоторые значения, но не знаю, как получить ошибки, если значения не соответствуют проверке.

const { check, validationResult } = require('express-validator/check');
const router = require("express").Router();

router.post("/", (req, res, next)=>{
    // validate user input
    const username = req.body.username;
    const email = req.body.email;
    const password = req.body.password;

    check("username")
    .not().isEmpty().withMessage("Username must not be empty!");
    check("email")
    .not().isEmpty().withMessage("Email must not be empty!");
    check("password")
    .not().isEmpty().withMessage("Password must not be empty!");

    //Get check results
});
module.exports = router;

Кроме того, check() возвращает обещаниеили он работает синхронно?И в документах есть:

app.post('/user', [
  check('username').isEmail()], (req, res) => {
  const errors = validationResult(req);
  ...
  }

Я пробовал validationResult(req), но он дает мне объект с некоторыми функциями, где только isEmpty() равен true, в то время как другие функции являются погодными условиями false, nullили не определено.И почему в методе post есть массив?

Заранее спасибо

1 Ответ

1 голос
/ 01 мая 2019

Пример из документов :

const { check, validationResult } = require('express-validator/check');

app.post('/user', [
  // username must be an email
  check('username').isEmail(),
  // password must be at least 5 chars long
  check('password').isLength({ min: 5 })
], (req, res) => {
  // Finds the validation errors in this request and wraps them in an object with handy functions
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }

  User.create({
    username: req.body.username,
    password: req.body.password
  }).then(user => res.json(user));
});

Если вы хотите, чтобы ваш код работал, вы должны следовать той же структуре.

Если validationResult обнаружит какие-либо ошибки, ваш сервер ответит так:

{
  "errors": [{
    "location": "body",
    "msg": "Invalid value",
    "param": "username"
  }]
}

В вашем случае вы можете напрямую скопировать код из этого примера документации, и он будет работать нормально.

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