我正在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;
}
}
答案 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'));