ошибка выдачи экспресс-валидатора с допустимым полем - PullRequest
0 голосов
/ 26 мая 2018

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

server.js

const express = require('express');
const app = express();
app.use(express.json())
app.use('/', index);

index.js

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

router.post('/register', [
  check('name').exists()
  ], function(req, res) {
  const validationErrors = validationResult(req)
  if (!validationErrors.isEmpty()) {
    console.log("validationErrors.array()\n", validationErrors.array())
  }
})

Чтобы проверить это, я ввожу действительный name в клиенте, и он отлично отображается в req.body.Стоит отметить, что req.body имеет следующую структуру:

{ userRegistrationForm:
   { name: 'John Doe',
     email: 'john@example.com',
     password: '',
     gender: '',
     birthMonth: 'Month',
     birthDate: 'Day',
     birthYear: 'Year' } }

В документах упоминается check('username').isEmail(),, но я не знаю, откуда исходит 'username', если только метод check() не являетсяглядя на req.body по умолчанию.

Независимо от того, что я делаю (имеется в виду, я ввожу правильное имя), я получаю одну и ту же ошибку проверки:

[ { location: 'body',
    param: 'name',
    value: undefined,
    msg: 'Invalid value' } ]

Как сделатьЯ правильно использую метод check()?

Обновление :

Я думаю, я понял это.Я изменил свой клиент для передачи req.body.name на сервер (в отличие от req.body.userRegistrationForm.name), и check('name'), кажется, ловит ошибку, когда я опускаю имя.Тем не менее, я хотел бы получить отзыв по этому вопросу.

1 Ответ

0 голосов
/ 27 мая 2018

Экспресс-валидатор здесь.

Чтобы выбрать поля, вложенные в другие объекты, вы указываете его путь с помощью точечной нотации *:

check('userRegistrationForm.name')

* IПризнайте, что если вы спрашиваете, нам могут понадобиться лучшие документы, чтобы покрыть это!PR приветствуются.

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