【问题标题】:Validate an array property only if another property inside the same object is true with express-validator仅当同一对象内的另一个属性使用 express-validator 为 true 时才验证数组属性
【发布时间】:2021-12-28 14:42:13
【问题描述】:

我正在使用 express-validator 来验证对我的 express 应用程序的请求,并且我有一个端点接收一个对象,其中一个属性是一组对象。如下所示。

{
    "propA": "",
    "propB": "",
    "items": [
         {
              "enabled": true,
              "name": "",
              "icon": "",
         }
    ]
}

我希望仅当 enabled 属性设置为 true 时才能将名称和图标设置为 required

我试图做这样的事情,但我没有按预期工作。

  body("items").isArray().withMessage("Items format is invalid"),
  body("items.*.enabled").isBoolean(),
  body("items.*.name").if(body("items.*.enabled")).notEmpty().bail(),
  body("items.*.icon").if(body("items.*.enabled")).notEmpty().bail()

【问题讨论】:

  • 不,没有用。可能是因为我在数组中使用属性。我认为 express-validator 是在整体检查它,而不是在我使用 oneOf 时查看每个对象。
  • 也许这里的自定义验证可能是唯一的选择?通过custom.
  • 是的,这是唯一的选择。项目维护人员表示,在当前版本中是不可能的。计划在版本 7.x 上对此进行改进。

标签: node.js express express-validator


【解决方案1】:

显然,在我使用的 express-validator 版本 (6.12.1) 中无法执行此操作。我必须编写一个自定义函数并手动使用 validator.js 函数(由 express-validator 使用)。

https://github.com/express-validator/express-validator/issues/1126

维护者计划在 7.0.0 版本上对此进行改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 2020-11-07
    • 2021-12-28
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    相关资源
    最近更新 更多