Skip to content

LargeOrange/validate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

使用文档

schema

使用AJKModel进行校验是需要声明一个schema,也就是用来校验的规则。 下面是一个简单的例子

let schema = {
                name: {type: 'string', required: true,},
                email: {type: 'string', required: true,},
                address: {
                    street: {type: 'string', required: true,},
                    city: {type: 'string', required: true,}
                },
            };

这个就是申明一个schema规定了输入数据规则,这个schema规定输入数据必须满足

1:输入数据的字段只能在name,email,address,address.street,address.city中,不能出现其他字段

2:输入数据的字段必须满足schema中规定的条件,比如name类型必须是string,而且不可缺失

schema rule 参数说明

type:规定参数的类型

现在支持可填参数:

  • number(纯数字的字符串/数字,整型)
  • string(字符串)
  • array 数组
    • 1:arrayRules可以为空
    • 2:数组里面的元素必须满足arrayRules,当数组是空数组的时候arrayRules的校验返回的是true

其他可选参数

  1. required(是否必须存在,默认true,传入的值不是bool类型报错)
  2. min(传入最小值,min的参数只能是纯数字,inputObj对应字段的值可以是纯数字的字符串)
  3. max(传入最大值,max的参数只能是纯数字,inputObj对应字段的值可以是纯数字的字符串)
  4. allow(限定值只能是数组里面的值,所以传入allow的参数必须是数组)
    • 比如: {a: allow:[1,2,3,4]}, 表示 a的值只能和[1,2,3,4]这个数组里面的元素相等
    • allow传入的值不是数组会报错
  5. length 限定输入参数的长度,现在针对字符串和数组。 length传入参数是数组,只能输入两种情况:
    • [?] :[?]表示规定长度,如[10],表示长度必须是10。
    • [?, ?]:表示长度在一个范围内(闭区间);如[2,10]表示长度>=2 且 <= 10。
    • ?表示>=0的整型数字
  6. applyFunction: 自定义校验函数

相对复杂schema的例子和说明

包含数组的schema

例子
let schema = {
                name: {type: 'string', required: true,},
                email: {type: 'array', arrayRules : {type: string},
                address: {
                    type: 'array',
                    arrayRules : {
                    	street: {type: 'string', required: true,},
                    	city: {type: 'string', required: false,}
                    }
                },
            };

说明

这个schema里面email和address是数组

email中type表明这个字段是个数组,arrayRules表明这个数组元素的规则,email这种写法表明是email是由字符串组成的数组,数组成员是字符串

address的arrayRules表明数组里面的每个成员是object/Json,且每个成员必须都有street,但是city值可以为空

校验

使用说明

调用AJKModel的validate方法,将规定好的schema和传入的参数inputObj传入validate方法中

let res = AJKModel.validate(schema, inputObj)

返回结果说明

返回结果res 是一个object有两个参数 code, message

当校验通过时 code = '100', message 没有

当校验发现不匹配时, code = '4000', message 是一个包含错误信息的字符串,通过JSON.parse解析后可以更清楚的看到那里有错

一个完整的例子

let AJKModel = require('../node_modules/@aijiakang/AJKModel');

let schema = {
                name: {type: 'string', required: true,},
                email: {type: 'string', required: true,},
                address: {
                    street: {type: 'string', required: true,},
                    city: {type: 'string', required: true,}
                },
            };
            
let inputObj = {
                name: '123',
                email:'1231',
                address:{
                    street: 'adsa',
                    city: 'BJ'
                }
            };

let res = AJKModel.validate(schema, inputObj);

res.code == 100  // ture

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published