获取req.getValidationResult不是使用expess验证器的函数

时间:2018-05-20 00:20:39

标签: validation express express-validator

我使用latest快速验证器,即使每个示例都有此语法,我也会继续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 个答案:

答案 0 :(得分:2)

express-validator maintainer。

从express-validator v4.0.0 all methods accessible from the req object are considered legacy开始,很快就会被弃用 这意味着任何方法(如req.checkBodyreq.validationResultreq.sanitize等)都不应用于新应用。

首选使用快递验证器的任何其他API(但旧版本)的方法。
validationResult(req)是访问验证错误的正确方法,它返回与req.getValidationResult() 完全相同的对象,但是以同步方式。

*请注意,由于express-validator最近发生了很大的变化,我建议反对以下2017年8月之前发布的教程。