Express验证器 - 如何允许可选字段

cyb*_*bat 9 validation node.js express

我使用的是express-validator版本2.3.0.似乎总是需要字段

req.check('notexist', 'This failed').isInt();
Run Code Online (Sandbox Code Playgroud)

永远都会失败 - 破碎还是我错过了什么?有一个notEmpty必填字段的方法似乎表明默认是可选的,但我无法通过上述方法.

Mos*_*tov 57

您可以使用以下optional方法:

req.check('notexist', 'This works').optional().isInt();
Run Code Online (Sandbox Code Playgroud)

编辑: 请参阅此处的文档


Abd*_*lol 19

至于express-validator 6它是这样做的:

check('email').isEmail().optional({nullable: true})
Run Code Online (Sandbox Code Playgroud)

从文档:

您可以通过传递具有以下选项的对象来自定义此行为:

nullable:如果为真,则具有空值的字段将被视为可选

checkFalsy:如果为真,带有假值(例如“”、0、假、空)的字段也将被视为可选

有关可选规则的更多信息。

  • 我认为在大多数情况下,人们需要空字符串“”作为可选。因此,请使用 `check("field").Optional({nullable: true, checkFalsy: true});`。 (2认同)