2017-07-14 41 views
0

我正在NodeJS中构建一个应用程序并进行表达。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; 
    } 
} 

回答

1

你确定你正在导出custom_validators.js文件中的customValidation?不要

module.exports.customValidation = customValidation 因为如果你喜欢 module.exports = customValidation

然后app.use(expressValidator(customValidators.customValidation));出口将需要进行调整,以app.use(expressValidator(customValidators))

1

另一种方法是刚刚创建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')); 
相关问题