我定了
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
在index.js中。
我有两个中间件:
ParseFloatObj:如果可能,将主体从字符串更改为浮点数。
validationSchemaCalcolo:是快速验证的模式
我的路线是
router.post(
"/risultati",
parseFloatObj,
validationSchemaCalcolo,
calcoloRisultati,
);
解析FloatObj:
const parseFloatObj = (req, res, next) => {
Object.keys(req.body).forEach(function (key, index) {
let isNum = /^\d+.?\d*$/.test(req.body[key]);
if (isNum == true) {
req.body[key] = parseFloat(req.body[key]);
}
});
next();
};
export default parseFloatObj;
问题是:当我在validationSchemaCaolcolo中获取req.body时,每个值仍然是一个字符串而不是浮点数,即使在parseFlaotObj的末尾所有主体都是浮点数。
看起来express.urlencoded总是将数据更改为字符串。
有解决办法吗?
我想我已经找到问题了!在validationSchemaCalcolo中我设置:
'**':{
trim:true,
escape:true
},
...所以每个浮点数都变成了一个字符串。