专栏首页web全栈工程师的取经之路A parameter verify tools for Egg

A parameter verify tools for Egg

最近接触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 - 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.

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 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.

email

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 with itemType.
  • 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+/}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谈谈Websockt

    它是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不...

    张炳
  • 初试小刀自我简历小程序

    最近在做小程序,和域名更换,和新域名备案事情,甚是较忙,少写了文章,今天尝试写一篇小白总结小程序的常见问题,刚接触小程序不到2周,在业余时间尝试小刀小程序,在做...

    张炳
  • 跨域通信

    那到底什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可...

    张炳
  • Go语言中反射的正确使用

    介绍 反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力。不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型。 反射有两个问题...

    李海彬
  • Json Schema 快速入门

    Json schema 本身遵循Json规范,本身就是一个Json字符串,先来看一个例子

    软测小生
  • Go语言中反射的正确使用

    介绍 反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力。不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型。 反射有两个问题...

    李海彬
  • Go语言中反射的正确使用

    介绍 反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力。不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型。 反射有两个问题...

    李海彬
  • oracle中的数组(第一篇)(r4笔记第9天)

    数组在各种编程语言中都是很重要的数据结构实现,在oracle中也有自己的一席之地。自己简单做了几个实验,发现很多东西还是眼高手低,真实去做的时候,里面还是有不少...

    jeanron100
  • JAVA实例化泛型

    DH镔
  • ElasticSearch(7.2.2)-es集群索引分⽚管理

    cwl_java

扫码关注云+社区

领取腾讯云代金券