Получение req.getValidationResult не является функцией с валидатором expess

Я использую последний экспресс-валидатор и продолжаю получать req.getValidationResult is not a function хотя каждый пример имеет этот синтаксис.

В моих маршрутах у меня есть

const express = require('express');
const router = express.Router();
const signup = require('../lib/signup.js');
const {body, validationResult } = require('express-validator/check');
router.post('/submit',
[
  body('username').not().isEmpty().withMessage('please enter username'),
  body('password').not().isEmpty().withMessage('please enter password')
],
(req, res)=>{
  req.getValidationResult().then( result => {
    var errors = result.array(); 
    console.log('errors', errors);
  })
}

У меня нет ничего, связанного с экспресс-валидатором в моем app.js, В моем package.json я имею "express-validator": "*", в зависимостях.

Если я сделаю

  let errors = validationResult(req);
  if (!errors.isEmpty()) {
    console.log('errors ', errors);
  }

оно работает.

Я не знаю, почему я продолжаю получать req.getValidationResult is not a function, Я понятия не имею, что происходит. Пожалуйста посоветуй. Спасибо

1 ответ

Решение

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

Начиная с Express-валидатора v4.0.0, все методы доступны из req Объект считается устаревшим и скоро будет объявлен устаревшим.
Это означает, что любые методы, такие как req.checkBody, req.validationResult, req.sanitize и т. д. не должны использоваться для новых приложений.

Использование методов из любого другого API экспресс-валидатора (кроме старого) является предпочтительным.
validationResult(req) является правильным способом доступа к ошибкам проверки, и он возвращает точно такой же объект, как req.getValidationResult(), но синхронно.

* Обратите внимание, что, поскольку в последнее время экспресс-валидатор сильно изменился, я рекомендую не использовать следующие уроки, опубликованные до августа 2017 года.

Другие вопросы по тегам