仅当同一对象内的另一个 属性 为真时,才使用 express-validator 验证数组 属性

Validate an array property only if another property inside the same object is true with express-validator

我正在使用 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 版本 (6.12.1) 中无法执行此操作。我必须编写自定义函数并手动使用 validator.js 函数(由 express-validator 使用)。

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

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