最近接触EGG框架,刚接触,其中涉及到验证参数的一些运用,网上找的egg-validate 都不是很好用,最后找到了parameter插件,挺好用,推荐给大家,直接上代码。
'use strict';
const Controller = require('egg').Controller;
const Parameter = require('parameter');
const Check = new Parameter();
class LogserviceController extends Controller {
async get() {
const ctx = this.ctx;
const {request,validator,service,constant} = ctx;
if(typeof(request.body.type) != 'undefined') request.body.type = Number(request.body.type);
if(typeof(request.body.curpage) != 'undefined') request.body.curpage = Number(request.body.curpage);
const rule = {
'start_time': {type:'date',required: false,max:10,allowEmpty: true},
'end_time':{type:'date',required: false,max:10,allowEmpty: true},
'type':{type:'enum',required: true,values:[0,200,404,500]},
'curpage' : {type:'number',required: true},
};
const errors = Check.validate(rule,request.body);
if(errors == undefined){
//当errors等于undefined 的时候,表示参数验证通过,这里写自己的业务逻辑
}else
{
this.ctx.body = errors;
}
}
}
module.exports = LogserviceController; 通过 npm install parameter --save 命令来安装,下面是更多的关于rule的规则。
required - if required is set to false, this property can be empty. default to true.type - The type of property, every type has it's own rule for the validate.If type is int, there has tow addition rules:
max - The maximum of the value, value must <= max.min - The minimum of the value, value must >= min.Alias to int.
If type is number, there has tow addition rules:
max - The maximum of the value, value must <= max.min - The minimum of the value, value must >= min.The date type want to match YYYY-MM-DD type date string.
The dateTime type want to match YYYY-MM-DD HH:mm:ss type date string.
Alias to dateTime.
The id type want to match /^\d+$/ type date string.
Match boolean type value.
Alias to boolean
If type is string, there has four addition rules:
allowEmpty(alias to empty) - allow empty string, default to false.format - A RegExp to check string's format.max - The maximum length of the string.min - The minimum length of the string.The email type want to match RFC 5322 email address.
allowEmpty - allow empty string, default is false.The password type want to match /^$/ type string.
compare - Compare field to check equal, default null, not check.max - The maximum length of the password.min - The minimum length of the password, default is 6.The url type want to match web url.
If type is enum, it requires an addition rule:
values - An array of data, value must be one on them. this rule is required. If type is object, there has one addition rule:
rule - An object that validate the properties ot the object.If type is array, there has four addition rule:
itemType - The type of every item in this array.rule - An object that validate the items of the array. Only work with itemType.max - The maximun length of the array.min - The minimun lenght of the array.'int' => {type: 'int', required: true} 'integer' => {type: 'integer', required: true} 'number' => {type: 'number', required: true} 'date' => {type: 'date', required: true} 'dateTime' => {type: 'dateTime', required: true} 'id' => {type: 'id', required: true} 'boolean' => {type: 'boolean', required: true} 'bool' => {type: 'bool', required: true} 'string' => {type: 'string', required: true, allowEmpty: false} 'email' => {type: 'email', required: true, allowEmpty: false, format: EMAIL_RE} 'password' => {type: 'password', required: true, allowEmpty: false, format: PASSWORD_RE, min: 6} 'object' => {type: 'object', required: true} 'array' => {type: 'array', required: true} [1, 2] => {type: 'enum', values: [1, 2]} /\d+/ => {type: 'string', required: true, allowEmpty: false, format: /\d+/}