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)