我正在尝试在我的Express路由器上实现验证,问题是当我通过{title:“”}时express-validator没有抛出错误,但是当我通过{title:“”}时它起作用了。 / p>
exports.postValidatorCheck = [
check("title", "The title must not we empty").isEmpty(),
check("title", "The Length of the Title should be in greater then 10").isLength({
min: 10,
max: 1500
}),
function(req, res, next) {
let errors = validationResult(req);
console.log(errors);
if (!errors.isEmpty()) {
const firstError = errors.errors.map(err => err.msg)[0];
return res.status(400).json({ error: firstError });
}
next();
}
];
jSON文件:
{
"title":"",
"body":"This is a new Post"
}
没有错误
JSON文件
{
"title":" ",
"body":"This is new post"
}
错误如预期。
答案 0 :(得分:2)
验证应使用负号:
check("title", "The title must not we empty").not().isEmpty()
这将确保title
不为空,这正是我认为的目的。
答案 1 :(得分:1)
首先,""
是一个空字符串。 " "
不是;它包含一个空格字符。如果您想将任何空格都算作空白,则应使用regex solution。
对于您的实际问题,您应该在测试isEmpty()
时正在测试not().isEmpty()
。