【发布时间】:2021-08-03 05:35:52
【问题描述】:
我对来自express-validator 的isIn 函数有疑问,这是我的代码:
const genres = [
"Comedy",
"Fantasy",
"Crime"
]
///
body("genres")
.exists()
.withMessage("Genre is Required")
.isArray()
.withMessage("Genres must be an array of Strings")
.isIn(genres)
.withMessage("Genre contain invalid value.")
现在我解释一下什么是不正常的,
当我发送时:
{
"genres":[ "Comedy", "Fantasy" ]
}
然后一切正常,我的验证器不会返回任何错误,
当我发送时:
{
"genres":[ "Test" ]
}
然后验证器返回错误,这很好,
但是当我发送这个时:
{
"genres":[ "Comedy", "Test" ]
}
那么...我的验证器不会返回任何错误,但他应该返回,因为我的 genres 数组中没有 Test 元素:/,有人可以告诉我这里有什么问题吗?看起来,验证器只需要从数组中返回一个正确的值即可在此处返回 true ...
这是我的验证器:
function validator(req, res, next) {
const errors = validationResult(req);
if (!errors.isEmpty()) {
const extractedErrors = []
errors.array().map(err => extractedErrors.push({ [err.param]: err.msg }))
return res.json({
errors: extractedErrors
})
}
next();
}
感谢您的帮助!
【问题讨论】:
标签: javascript typescript express validation