仅当同一对象内的另一个 属性 为真时,才使用 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 版本中对此进行改进。
我正在使用 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 版本中对此进行改进。