Express 验证器自定义函数
Express validator custom function
我正在尝试为 express API 编写自定义验证器。我不知道如何拒绝来自自定义验证器的不正确值。这是我拥有的:
function validateInput(value) {
if (!(
(check(value).isIn(utils.getNames()) ||
check(value).isIn(utils.getIds()) ||
check(value).isIn(utils.getHexIds()))
)) {
return Promise.reject("Invalid input");
}
}
router.get('/endpoint',
query("input").custom(async (value) => {
await validateInput(value).catch()
}),
async (req, res) => {
try {
validationResult(req).throw();
} catch (err) {
res.status(400).json({"error": "A valid value for input must be passed"});
return;
}
}
我感觉我没有正确处理承诺,但我也找不到正确的解决方案。以下是自定义验证器的文档:https://express-validator.github.io/docs/custom-validators-sanitizers.html
看起来你是 over-complicating 验证者。
首先,.catch()
应该以论证为一般规则。
这里,你做希望promise在失效的情况下拒绝,所以你不需要catch。
怎么样:
query("input").custom(validateInput)
我正在尝试为 express API 编写自定义验证器。我不知道如何拒绝来自自定义验证器的不正确值。这是我拥有的:
function validateInput(value) {
if (!(
(check(value).isIn(utils.getNames()) ||
check(value).isIn(utils.getIds()) ||
check(value).isIn(utils.getHexIds()))
)) {
return Promise.reject("Invalid input");
}
}
router.get('/endpoint',
query("input").custom(async (value) => {
await validateInput(value).catch()
}),
async (req, res) => {
try {
validationResult(req).throw();
} catch (err) {
res.status(400).json({"error": "A valid value for input must be passed"});
return;
}
}
我感觉我没有正确处理承诺,但我也找不到正确的解决方案。以下是自定义验证器的文档:https://express-validator.github.io/docs/custom-validators-sanitizers.html
看起来你是 over-complicating 验证者。
首先,.catch()
应该以论证为一般规则。
这里,你做希望promise在失效的情况下拒绝,所以你不需要catch。
怎么样:
query("input").custom(validateInput)