我正在编写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'不区分大小写?
谢谢!
我不确定为什么您需要不区分大小写的检查,因为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
);