将正文从字符串解析为浮点数的中间件

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

我定了

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总是将数据更改为字符串。

有解决办法吗?

javascript node.js express parsing middleware
1个回答
0
投票

我想我已经找到问题了!在validationSchemaCalcolo中我设置:

 '**':{
    trim:true,
    escape:true
  }, 

...所以每个浮点数都变成了一个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.