【问题标题】:Express validator - validate all route named paramsExpress 验证器 - 验证所有名为 params 的路由
【发布时间】:2019-03-12 14:38:09
【问题描述】:

我想使用快速验证器验证所有路由命名参数。我试图在中间件中执行此操作,但它不起作用。我怎样才能做到这一点?下面是我的代码的简化版本。

module.exports = (req, res, next) => {
  const routeParameters = Object.keys(req.params);

  for (const parameter of routeParameters) {
    param(parameter).isInt()
  }

  next();
};

【问题讨论】:

    标签: node.js express express-validator


    【解决方案1】:
    module.exports = (req, res, next) => {
      const routeParameters = Object.keys(req.params);
    
      const invalidParams = [];
    
      for (const parameter of routeParameters) {
        if (!param(parameter).isInt()) {
          invalidParams.push(param);
        }
      }
    
      if (invalidParams.length) {
        return res
          .status(400)
          .json({
            message: `The following parameters are invalid: [ ${invalidParams.join(", ")} ]`
          });
      }
      next();
    };
    

    【讨论】:

    • 我正在检查单独中间件中的验证错误,因此无法从此处返回响应。此外,我想了解所有参数的错误信息。
    • 我想我不明白用例 - 如果参数在这里验证失败(即它们不是整数)你想继续请求并稍后验证它吗?
    • 假设第一个参数验证失败。我想存储此错误并检查其他参数,以便稍后返回所有错误。这是快速验证器的标准行为。
    • 我已经更新了答案,希望能反映您所描述的情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2018-01-18
    • 2019-09-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多