1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- const log = require('../logger').logger('paramsMid', 'info');
- const rcodeMap = require('../maps/rcodeMap');
- const failedRcode = rcodeMap.notParam;
- function paramsCheck(ruleParams) {
-
-
- return function(req, res, next) {
- if (!ruleParams) {
- return next();
- }
-
- let isPass;
- if (ruleParams.get) {
- isPass = checkUrlParams('get', ruleParams.get, req.query);
- }
- if (ruleParams.post) {
- isPass = checkUrlParams('post', ruleParams.post, req.body);
- }
- if (!isPass.pass) {
- log.warn(isPass.msg);
- res.json({
- rcode: failedRcode,
- msg: isPass.msg
- });
- return;
- }
- next();
- }
- }
- function isEmpty(s) {
- if (s == undefined || s === '') {
- return true
- }
- return false
- }
- function checkUrlParams(type = 'get', rules, params) {
- let paramFields = Object.keys(rules);
-
- for (let i = 0; i < paramFields.length; i++) {
- let field = paramFields[i];
- let rule = rules[field];
-
- let isTypeEnum = false;
-
- if (rule.required && isEmpty(params[field])) {
- return { pass: false, msg: `${type} param ${field} required`, matchRule: rule }
- }
-
- if (rule.types && rule.types.length) {
-
- for (let i = 0; i < rule.types.length; i++) {
- if (typeof params[field] == rule.types[i]) {
- isTypeEnum = true;
- }
- }
-
- if (!isTypeEnum) {
- return { pass: false, msg: `${type} param ${field} Type Error need ${rule.types.join('|')} but ${typeof params[field]}`, matchRule: rule }
- }
- }
-
- if (rule.default && params[field] === undefined) {
- console.log(`设置默认值字段:${field},值${rule.default}`);
- params[field] = rule.default;
- }
- }
- return { pass: true };
- }
- module.exports = paramsCheck;
|