check-data
Advanced tools
Comparing version 3.0.0 to 3.0.1
@@ -59,3 +59,3 @@ "use strict" | ||
} else { | ||
return { error: '必须为字符串' } | ||
return { error: '必须为String类型' } | ||
} | ||
@@ -100,3 +100,3 @@ }, | ||
if (isNaN(data)) { | ||
return { error: '必须为数值类型' } | ||
return { error: '必须为Number类型' } | ||
} else { | ||
@@ -135,3 +135,3 @@ return { data: Number(data) } | ||
} else { | ||
return { error: '必须为对象' } | ||
return { error: '必须为Object类型' } | ||
} | ||
@@ -145,3 +145,3 @@ }, | ||
} else { | ||
return { error: '必须为数组' } | ||
return { error: '必须为Array类型' } | ||
} | ||
@@ -169,3 +169,3 @@ }, | ||
} else { | ||
return { error: '必须为日期类型' } | ||
return { error: '必须为Date类型' } | ||
} | ||
@@ -179,3 +179,3 @@ }, | ||
} else { | ||
return { error: '必须为布尔值' } | ||
return { error: '必须为Boolean值' } | ||
} | ||
@@ -189,3 +189,3 @@ }, | ||
} else { | ||
return { error: '必须为函数' } | ||
return { error: '必须为Function类型' } | ||
} | ||
@@ -192,0 +192,0 @@ }, |
{ | ||
"name": "check-data", | ||
"version": "3.0.0", | ||
"version": "3.0.1", | ||
"description": "JS对象验证器", | ||
"main": "index.js", | ||
"scripts": { | ||
"dev": "nodemon test/object" | ||
"dev": "nodemon test/object", | ||
"test": "ava test/ -w" | ||
}, | ||
@@ -16,2 +17,3 @@ "author": "https://github.com/xiangle/verify.git", | ||
"devDependencies": { | ||
"ava": "^0.25.0", | ||
"nodemon": "^1.11.0" | ||
@@ -18,0 +20,0 @@ }, |
104
README.md
### Install | ||
npm install check-data --save | ||
``` | ||
npm install check-data --save | ||
``` | ||
@@ -10,3 +12,3 @@ ### 使用方法 | ||
let { error, data } = Validator(data, options, customize) | ||
let { error, data } = Validator(data, options, extend) | ||
``` | ||
@@ -22,3 +24,3 @@ | ||
* `extend.$name` *Function* - 数据扩展函数,基于已验证的数据构建新的数据结构,输出结果将以函数名作为key保存到data中。函数中this和第一个入参指向data(已存在的同名属性值会被函数返回值覆盖) | ||
* `extend.$name` *Function* - 数据扩展函数,基于已验证的数据构建新的数据结构,输出结果将以函数名作为key保存到返回值的data中。函数中this和第一个入参指向data(已存在的同名属性值会被函数返回值覆盖) | ||
@@ -29,15 +31,18 @@ * `extend.$name` * - 数据扩展,除函数外的其它任意数据类型,在已验证的数据结构上添加新的属性或覆盖已存在的同名属性 | ||
> 输出数据是基于约定的对象结构,error和data不会同时存在,验证成功返回data,验证失败返回error和msg | ||
> 返回值是基于约定的对象结构,error和data属性不会同时存在,验证成功返回data,验证失败返回error和msg | ||
* `data` * - 经过验证、处理后导出数据,内置空值过滤,自动剔除对象、数组中的空字符串、undefind值。(更多空值过滤特性请参考[filter-null模块](https://github.com/xiangle/filter-null)) | ||
* `error` *String* - 验证失败时返回的错误信息,包含错误的具体位置信息,仅供开发者调试使用 | ||
* `data` *Objcte* - 经过验证、处理后导出数据,内置空值过滤,自动剔除对象、数组中的空字符串、undefind值。(更多空值过滤特性请参考[filter-null模块](https://github.com/xiangle/filter-null)) | ||
* `msg` *String* - 验证失败后返回的错误信息,相对于error而言,msg对用户更加友好,可直接在客户端显示 | ||
### options验证表达式 | ||
### options | ||
options数据验证表达式支持无限嵌套,不管你的数据层级有多深。整体数据结构与待验证数据结构基本保持一致,除了使用type对象表达式不得不增加额外的数据结构。 | ||
> 验证表达式中判断一个对象节点是否为验证选项的唯一依据是看对象中是否包含type属性,否则会被视为对象结构。type作为验证表达式的保留关键字,应尽量避免在入参中包含type属性,否则可能导致验证器出现混乱。 | ||
> 验证表达式中判断一个对象节点是否为验证选项的唯一依据是检查对象中是否包含type属性,如果没有type则被视为对象结构。 | ||
> type作为验证表达式的内部保留关键字,应尽量避免在入参中包含同名的type属性,否则可能导致验证结果出现混乱。 | ||
#### 通用选项 | ||
@@ -57,3 +62,3 @@ | ||
* `and` *Array、Function* - 声明依赖的参数名数组,支持数组和函数两种表达式,函数表达式用于声明指定值的依赖关系。要求依赖的所有参数都不能为空 | ||
* `and` *Array、Function* - 声明依赖的参数名数组,支持数组和函数两种表达式,函数表达式用于声明指定值的依赖关系。要求依赖的所有参数都不能为空(注意:这里的and用于依赖判断,如参数a必须依赖参数b构成一个完整的数据,那么就要将参数b加入到and的数组中建立依赖关系) | ||
@@ -64,7 +69,7 @@ * `or` *Array、Function* - 与and相似,区别是只要求依赖的其中一个参数不为空即可 | ||
### 专用选项 | ||
#### 专用选项 | ||
> 针对不同的数据类型,会有不同的可选参数,参数如下 | ||
> 针对不同的数据类型,会有不同的可选参数,选项如下 | ||
#### String | ||
##### String | ||
@@ -79,3 +84,3 @@ * `minLength` *Number* - 限制字符串最小长度 | ||
#### Number | ||
##### Number | ||
@@ -88,3 +93,3 @@ * `min` *Number* - 限制最小值 | ||
#### Array | ||
##### Array | ||
@@ -95,7 +100,7 @@ * `minLength` *Number* - 限制字符串最小长度 | ||
#### Object | ||
##### Object | ||
> 仅支持类型验证 | ||
#### Date、Boolean、Function | ||
##### Date、Boolean、Function | ||
@@ -105,13 +110,13 @@ > 仅支持类型验证 | ||
### 其它数据类型 | ||
#### 其它数据类型 | ||
#### 'MongoId' | ||
##### 'MongoId' | ||
> 验证mongodb中的ObjectId | ||
#### 'MobilePhone' | ||
##### 'MobilePhone' | ||
> 验证手机号 | ||
#### 'Email' | ||
##### 'Email' | ||
@@ -123,3 +128,3 @@ > 验证Email | ||
> 通过Validator.use()方法添加自定义的数据类型,使用方法和扩展类型一样,用字符串声明数据类型 | ||
验证器中只内置了一部分常用的数据类型,如果不能满足你的需求,可以通过Validator.use()自行扩展,使用时和扩展类型一样,用类型名称字符串声明数据类型 | ||
@@ -138,34 +143,33 @@ ```js | ||
##### 参考示例 | ||
```js | ||
Validator.use('Int', { | ||
type({ data }) { | ||
if (Number.isInteger(data)) { | ||
return { data } | ||
} else { | ||
return { error: '必须为Int类型' } | ||
} | ||
}, | ||
max({ data, option: max }) { | ||
if (data > max) { | ||
return { error: `不能大于${max}` } | ||
} else { | ||
return { data } | ||
} | ||
}, | ||
in({ data, option: arr }) { | ||
let result = arr.indexOf(data) | ||
if (result === -1) { | ||
return { error: `值必须为${arr}中的一个` } | ||
} else { | ||
return { data } | ||
} | ||
} | ||
type({ data }) { | ||
if (Number.isInteger(data)) { | ||
return { data } | ||
} else { | ||
return { error: '必须为Int类型' } | ||
} | ||
}, | ||
max({ data, option: max }) { | ||
if (data > max) { | ||
return { error: `不能大于${max}` } | ||
} else { | ||
return { data } | ||
} | ||
}, | ||
in({ data, option: arr }) { | ||
let result = arr.indexOf(data) | ||
if (result === -1) { | ||
return { error: `值必须为${arr}中的一个` } | ||
} else { | ||
return { data } | ||
} | ||
} | ||
}) | ||
``` | ||
### schema验证(预定义验证器) | ||
### schema验证器 | ||
> 通过预定义schema,实现options单例复用(option为静态数据),避免频繁创建重复的实例,可节省内存和减少计算开销。在环境允许的情况下应优先考虑schema方式。 | ||
通过预定义schema,实现options单例复用(option为静态数据),避免频繁创建重复的实例,可节省内存和减少计算开销。在环境允许的情况下应优先考虑schema方式。 | ||
@@ -322,3 +326,3 @@ | ||
```js | ||
# 输入数据 | ||
// 输入数据 | ||
let json = { | ||
@@ -361,3 +365,3 @@ "username": "测试", | ||
# 验证表达式 | ||
// 验证表达式 | ||
let { error, data } = Validator(json, | ||
@@ -411,3 +415,3 @@ { | ||
"type": String, | ||
handle(value) { | ||
set(value) { | ||
return { "$gt": new Date() } | ||
@@ -449,3 +453,3 @@ } | ||
### 更新内容 | ||
### 版本更新内容 | ||
@@ -452,0 +456,0 @@ * 新增Function类型验证 |
"use strict" | ||
let Validator = require('..') | ||
import test from 'ava'; | ||
import Check from '..'; | ||
let json = { | ||
a: ['xx', 'kk'], | ||
b: [666, 999, 88], | ||
} | ||
let { error, data } = Validator( | ||
{ | ||
a: ['xx', 'kk'], | ||
b: [666, 1, 88], | ||
}, | ||
{ | ||
b: [{ "type": Number, "allowNull": false }, { "allowNull": false }], | ||
} | ||
) | ||
test('example', t => { | ||
if (error) { | ||
console.log(error) | ||
} else { | ||
console.log(data) | ||
} | ||
let { error, data } = Check(json, { | ||
b: [{ | ||
"type": Number, | ||
"allowNull": false | ||
}, { | ||
"allowNull": false | ||
}] | ||
}) | ||
t.truthy(data, error); | ||
}); |
"use strict" | ||
let Validator = require('..') | ||
import test from 'ava'; | ||
import Check from '..'; | ||
Validator.use('Int', { | ||
Check.use('Int', { | ||
type({ data }) { | ||
@@ -16,22 +17,19 @@ if (Number.isInteger(data)) { | ||
let { error, data } = Validator( | ||
{ | ||
"name": 666.5, | ||
}, | ||
{ | ||
"name": { | ||
"type": 'Int', | ||
"name": "名称", | ||
"allowNull": false, | ||
"default": "默认值", | ||
test('extend', t => { | ||
let { error, data } = Check( | ||
{ | ||
"name": 666, | ||
}, | ||
{ | ||
"name": { | ||
"type": 'Int', | ||
"name": "名称", | ||
"allowNull": false, | ||
"default": "默认值", | ||
} | ||
} | ||
} | ||
) | ||
) | ||
t.truthy(data, error); | ||
if (error) { | ||
console.log(error) | ||
} else { | ||
console.log(data) | ||
} | ||
}); |
"use strict" | ||
let Validator = require('..') | ||
import test from 'ava'; | ||
import Check from '..'; | ||
let { error, data } = Validator( | ||
{ | ||
a: { | ||
a1: 1, | ||
a2: "12", | ||
test('function', t => { | ||
let { error, data } = Check( | ||
{ | ||
a: { | ||
a1: 1, | ||
a2: "12", | ||
}, | ||
b: "666", | ||
}, | ||
b: "666", | ||
}, | ||
{ | ||
a: { | ||
a1: Number, | ||
a2: Number, | ||
}, | ||
b: Number, | ||
} | ||
) | ||
{ | ||
a: { | ||
a1: Number, | ||
a2: Number, | ||
}, | ||
b: Number, | ||
} | ||
) | ||
if (error) { | ||
console.log(error) | ||
} else { | ||
console.log(data) | ||
} | ||
t.truthy(data, error); | ||
}); |
"use strict" | ||
let Validator = require('..') | ||
import test from 'ava'; | ||
import Check from '..'; | ||
test('null', t => { | ||
let { error, data } = Validator( | ||
{ | ||
a: undefined, | ||
b: ["kkk", "xxx"], | ||
c: "是" | ||
}, | ||
{ | ||
a: { | ||
type: String | ||
let { error, data } = Check( | ||
{ | ||
a: undefined, | ||
b: ["kkk", "xxx"], | ||
c: "是" | ||
}, | ||
b: { | ||
type: Array, | ||
handle(data) { | ||
return data.join() | ||
{ | ||
a: { | ||
type: String | ||
}, | ||
b: { | ||
type: Array, | ||
handle(data) { | ||
return data.join() | ||
} | ||
}, | ||
c: { | ||
type: String, | ||
handle(data) { | ||
return data | ||
} | ||
} | ||
}, | ||
c: { | ||
type: String, | ||
handle(data) { | ||
return data | ||
} | ||
} | ||
} | ||
) | ||
) | ||
if (error) { | ||
console.log(error) | ||
} else { | ||
console.log(data) | ||
} | ||
t.truthy(data, error); | ||
}); |
"use strict" | ||
let Validator = require('..') | ||
import test from 'ava'; | ||
import Check from '..'; | ||
let obj = { | ||
let json = { | ||
a: { | ||
@@ -17,38 +18,38 @@ a1: 1, | ||
let { error, data } = Validator(obj, | ||
{ | ||
// a: { | ||
// a1: { | ||
// type: Number, | ||
// allowNull: false | ||
// }, | ||
// a2: { | ||
// type: Number, | ||
// allowNull: false | ||
// } | ||
// }, | ||
b: { | ||
type: Number, | ||
set(data) { | ||
return data * 2 | ||
} | ||
test('null', t => { | ||
let { error, data } = Check(json, | ||
{ | ||
// a: { | ||
// a1: { | ||
// type: Number, | ||
// allowNull: false | ||
// }, | ||
// a2: { | ||
// type: Number, | ||
// allowNull: false | ||
// } | ||
// }, | ||
b: { | ||
type: Number, | ||
set(data) { | ||
return data * 2 | ||
} | ||
}, | ||
s: { | ||
type: Number, | ||
name: "拉拉", | ||
}, | ||
c: Function, | ||
}, | ||
s: { | ||
type: Number, | ||
name: "拉拉", | ||
}, | ||
c: Function, | ||
}, | ||
{ | ||
test() { | ||
return 888 | ||
}, | ||
ss: 999 | ||
} | ||
) | ||
{ | ||
test() { | ||
return 888 | ||
}, | ||
ss: 999 | ||
} | ||
) | ||
if (error) { | ||
console.log(error) | ||
} else { | ||
console.log(data) | ||
} | ||
t.truthy(data, error); | ||
}); |
"use strict" | ||
let Validator = require('..') | ||
import test from 'ava'; | ||
import Check from '..'; | ||
let schema = Validator.schema('demo', | ||
let schema = Check.schema('demo', | ||
{ | ||
@@ -29,36 +30,31 @@ a: { | ||
let data1 = { | ||
a: { | ||
a1: "jj", | ||
a2: "12", | ||
}, | ||
b: 2, | ||
c: 888, | ||
} | ||
let data2 = { | ||
a: { | ||
a1: 666, | ||
a2: "12", | ||
}, | ||
b: 2, | ||
c: 888, | ||
} | ||
test('schema 1', t => { | ||
// let { error, data } = schema(data1) | ||
let { error, data } = Check.demo({ | ||
a: { | ||
a1: 999, | ||
a2: "12", | ||
}, | ||
b: 2, | ||
c: 888, | ||
}) | ||
let result1 = Validator.demo(data1) | ||
t.truthy(data, error); | ||
if (result1.error) { | ||
console.log(result1.error) | ||
} else { | ||
console.log(result1.data) | ||
} | ||
}); | ||
let result2 = Validator.demo(data2) | ||
test('schema 2', t => { | ||
if (result2.error) { | ||
console.log(result2.error) | ||
} else { | ||
console.log(result2.data) | ||
} | ||
let { error, data } = Check.demo({ | ||
a: { | ||
a1: 666, | ||
a2: "12", | ||
}, | ||
b: 344, | ||
c: 333, | ||
}) | ||
t.truthy(data, error); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
32793
445
2
784