Получение 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 года.