最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用链验证通过Express Validator检查是否存在可选字段

IT培训 admin 5浏览 0评论

使用链验证通过Express Validator检查是否存在可选字段

我正在尝试检查API请求中是否存在可选字段,如果该字段存在,请执行嵌套验证以检查其中是否存在其他两个字段(一个或另一个,或两个都隐式存在)。我正在使用Express Validator尝试完成此任务。

// Sample request body
{
  <...>
  thresholds: {
    min: 3,
    max: 5
  }
}

// (Attempted) validation chain
check('thresholds').optional()
      .custom( innerBody => {
          console.log('THRESHOLDS', innerBody);
          oneOf([
              check('innerBody.min').optional(),
              check('innerBody.max').optional()
          ]);
      })

以上代码段是我正在验证完整请求正文的较大验证链的一部分。我还尝试从内部innerBody.中删除check字符串,但仍然没有运气。我正在console.log设置阈值主体,并且可以正确打印出来,但是当我试图通过集成测试时,仍然出现验证错误:

{"name":"ValidationError","message":"ValidationError: Validation failed","errors":[{"location":"body","param":"thresholds","value":{"min":3,"max":5},"msg":"Invalid value"}]}

我对Express Validator还是比较陌生,所以如果我错误地链接验证/不正确使用oneOf或某些东西会喜欢某些指针!

谢谢

回答如下:

看上去.custom函数需要返回Promise。答案如下:

.custom(innerBody => {
            if (!(innerBody.min) || !(innerBody.max)) return Promise.reject('Missing min or max');
            return Promise.resolve();
        })

使用链验证通过Express Validator检查是否存在可选字段

我正在尝试检查API请求中是否存在可选字段,如果该字段存在,请执行嵌套验证以检查其中是否存在其他两个字段(一个或另一个,或两个都隐式存在)。我正在使用Express Validator尝试完成此任务。

// Sample request body
{
  <...>
  thresholds: {
    min: 3,
    max: 5
  }
}

// (Attempted) validation chain
check('thresholds').optional()
      .custom( innerBody => {
          console.log('THRESHOLDS', innerBody);
          oneOf([
              check('innerBody.min').optional(),
              check('innerBody.max').optional()
          ]);
      })

以上代码段是我正在验证完整请求正文的较大验证链的一部分。我还尝试从内部innerBody.中删除check字符串,但仍然没有运气。我正在console.log设置阈值主体,并且可以正确打印出来,但是当我试图通过集成测试时,仍然出现验证错误:

{"name":"ValidationError","message":"ValidationError: Validation failed","errors":[{"location":"body","param":"thresholds","value":{"min":3,"max":5},"msg":"Invalid value"}]}

我对Express Validator还是比较陌生,所以如果我错误地链接验证/不正确使用oneOf或某些东西会喜欢某些指针!

谢谢

回答如下:

看上去.custom函数需要返回Promise。答案如下:

.custom(innerBody => {
            if (!(innerBody.min) || !(innerBody.max)) return Promise.reject('Missing min or max');
            return Promise.resolve();
        })
发布评论

评论列表 (0)

  1. 暂无评论