Мой экспресс-валидатор работает неправильно, он всегда показывает ошибку

#node.js #express #express-validator

#node.js #экспресс #экспресс-валидатор

Вопрос:

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

Мой app.js

 var createError = require('http-errors'); var express = require('express'); var favicon = require('serve-favicon'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var expressLayouts = require('express-ejs-layouts');  var indexRouter = require('./routes/index');  var app = express(); app.use(favicon(path.join(__dirname, 'public', 'images', 'site-favicon.ico')));   app.use(logger('dev')); app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(express.static(__dirname   '/public'));  // view engine setup app.use(expressLayouts); app.set('views', [  path.join(__dirname, 'views'),  path.join(__dirname, 'views/genre/'),  path.join(__dirname, 'views/game/'),  path.join(__dirname, 'views/developer/'),  path.join(__dirname, 'views/partials/'), ]); app.set('layout', './layouts/main'); app.set('view engine', 'ejs');  app.use('/', indexRouter);  // catch 404 and forward to error handler app.use(function (req, res, next) {  next(createError(404)); });  // error handler app.use(function (err, req, res, next) {  // set locals, only providing error in development  res.locals.message = err.message;  res.locals.error = req.app.get('env') === 'development' ? err : {};   // render the error page  res.status(err.status || 500);  res.render('error'); });  module.exports = app;  

Мой обработчик маршрутов

 // Handle Genre create on POST. exports.genre_create_post = [  // Validate and santize the name field.  body('name', 'Genre name should be at least 2 characters long')  .trim()  .isLength({ min: 2, max: 100 })  .escape(),  upload.single('genreImage'),   // Process request after validation and sanitization.  (req, res, next) =gt; {  // Extract the validation errors from a request.  const errors = validationResult(req);   // Create a genre object with escaped and trimmed data.  var genre = new Genre({ name: req.body.name });   if (!errors.isEmpty()) {  console.log(req.body)  console.log(errors.array());  res.render('genre_form', { title: 'Create genre', errors: errors.array() });  return;  }   if (!req.hasOwnProperty('file')) {  console.log(genre);  res.render('genre_form', { title: 'Create Genre', error: 'Image is required to make genre' });  return;  } else {  // console.log(req.file)  genre.genreImage = req.file.path.substring(6);  Genre.findOne({ name: req.body.name }).exec(function (err, found_genre) {  if (err) {  return next(err);  }  if (found_genre) {  res.redirect(found_genre.url);  } else {  genre.save(function (err) {  if (err) {  return next(err);  }  res.redirect(genre.url);  });  }  });  }  }, ];   

My form written in ejs

 lt;maingt;  lt;div class="forms"gt;  lt;h1gt;Create a New Genrelt;/h1gt;  lt;hr /gt;   lt;div class="formDiv"gt;  lt;form action="/genre/create" method="POST" enctype="multipart/form-data"gt;  lt;label for="name"gt;Genre Namelt;/labelgt;  lt;input  type="text"  id="name"  placeholder="Please enter genre name"  name="name"  required="true"  /gt;  lt;label for="genreImage"gt;Genre Imagelt;/labelgt;  lt;input type="file" id="genreImage" name="genreImage" /gt;  lt;button class="btn" type="submit"gt;Submitlt;/buttongt;  lt;/formgt;  lt;/divgt;    lt;div class="errors-list"gt;  lt;% if (typeof errors != 'undefined') { %gt;  lt;ul class=""gt;  lt;% errors.forEach(error =gt; { %gt;  lt;ligt;lt;h2gt;lt;%= error.msg %gt;lt;/h2gt;lt;/ligt;  lt;% }); %gt;  lt;/ulgt;  lt;% } %gt;    lt;% if (locals.error) { %gt;  lt;ul class=""gt;  lt;ligt;lt;h2gt;lt;%= error%gt;lt;/h2gt;lt;/ligt;  lt;/ulgt;  lt;% } %gt;  lt;/divgt;  lt;/divgt; lt;/maingt;  

Поэтому, когда я пытаюсь ввести имя, содержащее более 2 символов, оно все равно выдает ошибки, показывающие, что название жанра должно быть длиннее 2 символов. Кто-нибудь может мне помочь?