最近接触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的规则。
Rule
common rule
-
required
- ifrequired
is set to false, this property can be empty. default totrue
. -
type
- The type of property, every type has it's own rule for the validate.
int
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
.
integer
Alias to int
.
number
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
.
date
The date
type want to match YYYY-MM-DD
type date string.
dateTime
The dateTime
type want to match YYYY-MM-DD HH:mm:ss
type date string.
datetime
Alias to dateTime
.
id
The id
type want to match /^\d+$/
type date string.
boolean
Match boolean
type value.
bool
Alias to boolean
string
If type is string
, there has four addition rules:
-
allowEmpty
(alias toempty
) - allow empty string, default to false. -
format
- ARegExp
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.
password
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.
url
The url
type want to match web url.
enum
If type is enum
, it requires an addition rule:
-
values
- An array of data,value
must be one on them. this rule is required.
object
If type is object
, there has one addition rule:
-
rule
- An object that validate the properties ot the object.
array
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 withitemType
. -
max
- The maximun length of the array. -
min
- The minimun lenght of the array.
abbr
-
'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+/}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。