2

我使用最新的express-validator,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。我不知道发生了什么。请指教。谢谢

4

1 回答 1

2

express-validator 维护者在这里。

从 express-validator v4.0.0 开始,可以从req对象访问的所有方法都被认为是遗留的,并且很快就会被弃用。
这意味着任何方法如req.checkBody, req.validationResult,req.sanitize等都不应该用于新应用程序。

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

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

于 2018-05-20T05:59:08.703 回答