разница между {key:} и {key:}, файл json?

Я пытаюсь реализовать проверку на своем экспресс-маршрутизаторе. Проблема в том, что когда я передаю {title:""}, экспресс-валидатор не выдает ошибку, но когда я передаю {title:""}, он работает.

exports.postValidatorCheck = [
  check("title", "The title must not we empty").isEmpty(),
  check("title", "The Length of the Title should be in greater then 10").isLength({
    min: 10,
    max: 1500
  }),
  function(req, res, next) {
    let errors = validationResult(req);
    console.log(errors);
    if (!errors.isEmpty()) {
      const firstError = errors.errors.map(err => err.msg)[0];
      return res.status(400).json({ error: firstError });
    }
    next();
  }
];

JSON-файл:

{
"title":"",
"body":"This is a new Post"
} 

Нет ошибки

JSON-файл

{
"title":" ",
"body":"This is new post"
}

Ошибка, как и ожидалось.


person amit rai    schedule 19.09.2019    source источник


Ответы (2)


Валидация должна использовать отрицательное значение:

check("title", "The title must not we empty").not().isEmpty()

Это позволит убедиться, что title не пусто, что, я думаю, вы и хотели.

person Christopher Taleck    schedule 19.09.2019

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

Что касается вашей реальной проблемы, вы тестируете isEmpty(), когда вы должны тестировать not().isEmpty().

person Matt    schedule 19.09.2019
comment
поэтому, когда я передаю {title:}, экспресс-валидатор должен выдать ошибку, но это не так, он проверяет заголовок и движется дальше. - person amit rai; 19.09.2019