express-validator:跳过自定义验证器

时间:2017-07-14 14:31:23

标签: javascript node.js validation express

我正在使用express-validator来验证我的请求数据。根据添加它们的文档,我们必须像这样声明它们

app.use(expressValidator({
 customValidators: {
    isArray: function(value) {
        return Array.isArray(value);
    },
    gte: function(param, num) {
        return param >= num;
    }
 }
}));

我在文档中添加了一个验证器。但我只能回归真假。

我想确保根据条件验证器跳过进一步的链验证。

1 个答案:

答案 0 :(得分:0)

你可以分阶段完成。在这里,我首先检查是否设置了用户名,并且只有在通过时我才进行昂贵的异步验证。

req.checkBody('username')
        .notEmpty().withMessage('Username is required.');

req.getValidationResult().then(result => {
        if (!result.isEmpty()) {
            return res.status(400).send(result.mapped());
        }

        req.checkBody('username')
            .isUserNameAvailable().withMessage('Username is not available.');

        req.getValidationResult().then(result => {
            if (!result.isEmpty()) {
                return res.status(400).send(result.mapped());
            }
            next();
        });

})