NodeJs表达验证器。区分大小写检查json

问题描述 投票:0回答:1

我正在编写NodeJS应用程序。我正在尝试使用'express-validator'验证输入json:

var express = require('express');
const winston = require('../config/winston');
const { check, validationResult } = require('express-validator');
const myController= require('../controller/myController.js');
var router = express.Router();

router.use(       [
              check('COMMON.user','User incorrect').not().isEmpty(),          
          ],
           (req, res, next) => {                
      const resCheck = validationResult(req);
      if (!resCheck.isEmpty()) {
          obj= req.body;
          obj.COMMON= {codigoRespuesta:-1, textoRespuesta:"Error checking request"};

          winston.info(JSON.stringify(obj));
         return res.json(obj);        
      }else{
          console.log("vacio");
      }
      return myController.procesaRequest(req, res); 
});

+似乎“ check”方法区分大小写。如果json输入包含“ {common:{user:” Test“ ...”“会引发错误,但是” {COMMON:{user:“ Test” ...“可以正常工作。

如何使'check'不区分大小写?

谢谢!

node.js case-sensitive express-validator
1个回答
0
投票

我不确定为什么您需要不区分大小写的检查,因为api必须严格进行验证。

但是我建议您将common转换为COMMON以实现您的目标:

router.use(
  // transforming (adapting)
  (req, res, next) => {
    if (req.body && req.body['common']) {
      req.body['COMMON'] = Object.create(req.body['common']);
      delete req.body['common'];
    }
    next();
  },

  // validation
  check('COMMON.user','User incorrect').not().isEmpty(),

  // post-validation
  (req, res, next) => {                
    const resCheck = validationResult(req);
    if (!resCheck.isEmpty()) {
      obj= req.body;
      obj.COMMON= {codigoRespuesta:-1, textoRespuesta:"Error checking request"};
      winston.info(JSON.stringify(obj));
      return res.json(obj);        
    }
    next();
  },

  // handler
  myController.procesaRequest
);
© www.soinside.com 2019 - 2024. All rights reserved.