NodeJS Express自定义验证器如何在单独的文件中要求

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

标签: javascript node.js express

我正在NodeJS中构建一个应用程序并表达。

我正在使用express-validator模块。我想创建自己的自定义验证函数。

我能够使用以下语法进行自定义验证。

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

问题:如何将验证功能分离到我可以包含在app.js文件中的单独文件中?

我想将app.js文件中的customValidators对象文字“需要”作为变量。我想我的customValidators对象会非常大,我想保持app.js文件的简单。

我尝试了以下但不起作用:

app.js

var customValidators = require('./api/controllers/custom_validators');

app.use(expressValidator(customValidators.customValidation));

./ API /控制器/ custom_validators.js

var customValidation = customValidators: {
    isArray: function(value) {
        return Array.isArray(value);
    },
    gte: function(param, num) {
        return param >= num;
    }
 }

2 个答案:

答案 0 :(得分:1)

您确定要在custom_validators.js文件中正确导出customValidation吗?做

module.exports.customValidation = customValidation 因为如果你像它一样出口它 module.exports = customValidation

然后app.use(expressValidator(customValidators.customValidation));需要调整为app.use(expressValidator(customValidators))

答案 1 :(得分:1)

另一种方法是创建一个router,您不需要使用expressValidator app.js,保持代码的模式有序:

// validators.js
var router = require('express').Router();
var expressValidator = require('express-validator');

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

module.exports = router;

在您的app.js

app.use(require('./validators'));