不允许在可选字段中使用空值?"/>
为什么Express Validator不允许在可选字段中使用空值?
我正在使用express-validator来验证表单,但是许多字段是可选的。我已经在路线上配置了验证器,例如:
const ExpValidate = require('express-validator');
router.post('/api/posthandler',
[ ExpValidate.body("TopicID").optional({nullable: true, checkFalsy: true}).trim().isInt(), ]
async function(req, res) {
const errors = ExpValidate.validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
else {
// Handle form here
}
[使用TopicID: null
提交表单时,出现错误提示:
{
"errors": [
{
"value": "null",
"msg": "Invalid value",
"param": "TopicID",
"location": "body"
}
]
}
即使从{nullable: true, checkFalsy: true}
方法中删除了optional()
选项,我也会遇到相同的错误。
[如果我只执行ExpValidate.body("TopicID").optional()
,就不会出现任何错误,但这使验证器无法检查是否提供了值isInt()
。
如果我根本不提交TopicID
,那么我也不会收到任何错误。
我的配置有问题吗?
回答如下:经过大量测试并且与docs相反,结果证明您无法通过TopicID: null
,但可以通过TopicID: ""
,它将被视为可选。
可能是一个bug,不知道。
更多推荐
为什么Express Validator不允许在可选字段中使用空值?
发布评论