繁体   English   中英

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

[英]NodeJS Express custom validator how to require in separate file

我在NodeJS和Express中构建应用程序。

我正在使用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/controllers/custom_validators.js

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

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

module.exports.customValidation = customValidation因为如果要像module.exports = customValidation一样导出它

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

另一种方法是创建一个router ,不需要使用expressValidatorapp.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'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM