当前位置: 首页 > 后端技术 > Node.js

Egg的一个参数校验工具

时间:2023-04-03 16:24:02 Node.js

>>>点击查看更多文章<<<最近接触到EGG框架,刚接触,涉及校验参数的一些应用,网上找的egg-validate没有很好用,终于找到了参数插件,非常好用。推荐给大家,直接上传代码。'usestrict';constController=require('egg').Controller;constParameter=require('parameter');constCheck=newParameter();classLogserviceControllerextendsController{asyncget(){constctx=this.CTX;const{请求、验证器、服务、常量}=ctx;如果(typeof(request.body.type)!='undefined')request.body.type=Number(request.body.type);如果(typeof(request.body.curpage)!='undefined')request.body.curpage=Number(request.body.curpage);construle={'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},};consterrors=Check.validate(rule,request.body);if(errors==undefined){//当errors等为undefined的时候,表示参考数据验证通过,这里写自己的业务通讯}else{this.ctx.body=错误;}}}module.exports=LogserviceController;通过npminstall参数--save命令安装,下面是更多关于rule的规则Rulecommonrulerrequired——如果required设置为false,这个属性可以为空。默认为true.type-属性的类型,每种类型都有自己的validate.int规则如果类型为int,则有两个附加规则:max-值的最大值,值必须<=max.min-最小值value的,valuemust>=min.integerAliastoint.number如果type是number,有两个加法规则:max-value的最大值,valuemust<=max.min-value的最小值,valuemust>=min.date日期类型要匹配YYYY-MM-DD类型日期string.dateTimedateTime类型要匹配YYYY-MM-DDHH:mm:ss类型日期string.datetimeAliastodateTime.idid类型要匹配/^\d+$/typedatestring.booleanMatchbooleantypevalue.boolAliastobooleanstring如果type是string,有四个附加规则:allowEmpty(aliastoempty)-允许空字符串,默认为false.format-用于检查字符串格式的RegExp。max-最大lengthofthestring.min-字符串的最小长度。emailTheemailtypewanttomatchRFC5322emailaddress.allowEmpty-allowemptystring,defaultisfalse.passwordThepasswordtypewanttomatch/^$/typestring.compare-比较字段检查是否相等,默认为null,不检查。max-密码的最大长度。min-密码的最小长度,默认为6.urlurl类型要匹配weburl.enum如果type为enum,则需要添加规则:values-一个数据数组,value必须是它们中的一个。此规则是必需的。object如果类型是对象,则有一个附加规则:规则-验证对象属性的对象。array如果类型是数组,则有四个附加规则:itemType-此数组中每个项目的类型。rule-验证数组项的对象。仅适用于itemType.max-array.min的最大长度-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,格式:EMAIL_RE}'password'=>{type:'password',要求:true,allowEmpty:false,格式:PASSWORD_RE,最小值:6}'object'=>{type:'object',要求:true}'array'=>{type:'array',required:true}[1,2]=>{type:'enum',values:[1,2]}/\d+/=>{type:'string',要求:true,allowEmpty:false,格式:/\d+/}