NodeJs express -валидатор. Чувствительная к регистру проверка json - PullRequest
0 голосов
/ 01 марта 2020

Я пишу NodeJS приложение. Я пытаюсь проверить правильность ввода json с помощью express -validator:

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 "... " работает нормально.

Как я могу сделать 'чек' без учета регистра?

Спасибо!

1 Ответ

1 голос
/ 01 марта 2020

Я не уверен, почему вам нужна проверка без учета регистра, потому что 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 errors = validationResult(req);
    if (!errors.isEmpty()) {
      winston.info(JSON.stringify(req.body), errors.array());
      return res.status(400).json({
        codigoRespuesta: -1, 
        textoRespuesta: "Error checking request",
        errors: errors.array()
      });        
    }
    next();
  },

  // handler
  myController.procesaRequest
);
...