check-data
Advanced tools
Comparing version 1.7.0 to 1.7.1
34
index.js
@@ -5,6 +5,7 @@ "use strict" | ||
let methods = require('./methods') | ||
let { methods, extend } = require('./methods') | ||
class Validator { | ||
class validator { | ||
constructor(data, options, key) { | ||
@@ -84,3 +85,3 @@ this.data = data | ||
return { | ||
error: `验证器中${field}字段参数配置错误,不支持${options.type}类型的type` | ||
error: `${field}参数配置错误,不支持${options.type}类型` | ||
} | ||
@@ -213,13 +214,2 @@ } | ||
// 自定义扩展 | ||
// Validator.middleware = [] | ||
// Validator.use = function (fn) { | ||
// this.middleware.push(fn) | ||
// } | ||
// Validator.use(() => { | ||
// console.log(111) | ||
// }) | ||
/** | ||
@@ -231,6 +221,5 @@ * 验证器 | ||
*/ | ||
module.exports = (data, options, handler = {}) => { | ||
function Validator(data, options, handler = {}) { | ||
// 递归验证 | ||
let output = new Validator(data, options, '') | ||
let output = new validator(data, options, '') | ||
@@ -244,3 +233,3 @@ if (output.error) { | ||
// 数据构造器 | ||
// 数据构函数 | ||
for (let name in handler) { | ||
@@ -250,3 +239,3 @@ let options = handler[name] | ||
if (typeof options === 'function') { | ||
let outData = options.call(output.data) | ||
let outData = options.call(output.data, output.data) | ||
// 对象空值过滤 | ||
@@ -259,2 +248,7 @@ output[name] = filterNull(outData) | ||
} | ||
} | ||
// 验证类型扩展 | ||
Validator.use = extend | ||
module.exports = Validator |
@@ -52,3 +52,3 @@ "use strict" | ||
// 数据类型方法 | ||
let typeMethod = { | ||
let methods = { | ||
[String]: { | ||
@@ -63,3 +63,3 @@ // 数据类型验证 | ||
}, | ||
// 长度验证 | ||
// 限制最小长度 | ||
minLength({ data, option: minLength }) { | ||
@@ -72,2 +72,3 @@ if (data.length < minLength) { | ||
}, | ||
// 限制最大长度 | ||
maxLength({ data, option: maxLength }) { | ||
@@ -80,2 +81,3 @@ if (data.length > maxLength) { | ||
}, | ||
// 正则 | ||
reg({ data, option: reg }) { | ||
@@ -92,3 +94,3 @@ if (data.search(reg) === -1) { | ||
if (result === -1) { | ||
return { err: `值必须为${arr}中的一个` } | ||
return { err: `值必须为[${arr}]选项其中之一` } | ||
} else { | ||
@@ -210,6 +212,14 @@ return { data } | ||
// 方法合并 | ||
for (let key in typeMethod) { | ||
typeMethod[key] = Object.assign(typeMethod[key], commonMethod) | ||
for (let key in methods) { | ||
methods[key] = Object.assign(methods[key], commonMethod) | ||
} | ||
module.exports = typeMethod | ||
// 自定义扩展 | ||
function extend(type, options) { | ||
methods[type] = options | ||
} | ||
module.exports = { | ||
methods, | ||
extend, | ||
} |
{ | ||
"name": "check-data", | ||
"version": "1.7.0", | ||
"version": "1.7.1", | ||
"description": "JS对象验证器", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -1,6 +0,6 @@ | ||
## Installation | ||
### Installation | ||
npm install check-data --save | ||
## 使用方法 | ||
### 使用方法 | ||
@@ -11,3 +11,3 @@ let Validator = require('check-data') | ||
## 输入 | ||
### 输入 | ||
@@ -18,5 +18,5 @@ * `data` * - 输入验证数据,类型参考type选项 | ||
* `constructor` *Objcte* - 自定义数据导出构造方法(可选) | ||
* `export` *Objcte* - 定义数据导出方法,从验证结果中选择要导出的数据,方法中this和第一个参数均绑定验证结果(可选) | ||
## 输出 | ||
### 输出 | ||
@@ -27,18 +27,14 @@ * `error` *String* - 验证失败时返回的错误信息,包含错误的具体位置,仅用于验证失败时的错误定位 | ||
* `data` *Objcte* - 经过验证、处理后导出数据(支持空值过滤,用于剔除对象中的空数组、空字符串、undefind、null) | ||
* `data` *Objcte* - 经过验证、处理后导出数据(带空值过滤,用于剔除对象中的空数组、空字符串、undefind、null等无效数据) | ||
* `${name}` *Objcte* - 由constructor对象中构造器生成的对象,命名与构造器名称一致(空值过滤) | ||
* `${name}` *Objcte* - 由export导出方法生成的对象,命名与export函数名一致(带空值过滤) | ||
## 选项说明 | ||
### 公共选项 | ||
> 如果只想验证数据类型,可以直接在参数值上用数据类型赋值 | ||
* `type` * - 表示数据类型,可选类型有String、Number、Object、 Array、Date、Boolean、"MongoId"、"MobilePhone"(扩展类型用字符串表示) | ||
### 通用选项 | ||
* `type` * - 用于定义数据类型,可选类型有String、Number、Object、 Array、Date、Boolean、"MongoId"、"MobilePhone",带引号字符串表示扩展类型(必选) | ||
* `name` *String* - 自定义参数名称,用于错误返回值中替换默认参数名 | ||
* `default` * - 空值时的默认赋值 | ||
* `default` * - 默认赋值 | ||
@@ -56,3 +52,3 @@ * `value` * - 直接通过表达式赋值,类似于default选项,区别是不管值是否为空都将使用该值覆盖(优先级低于default,目前没有发现同时使用的应用场景) | ||
### 内置数据类型(用构造函数表示) | ||
### 不同数据类型的私有选项 | ||
@@ -81,7 +77,7 @@ #### String | ||
> 后续扩展 | ||
> 仅支持类型验证 | ||
#### Object | ||
> 后续扩展 | ||
> 仅支持类型验证 | ||
@@ -93,3 +89,3 @@ #### Date、Boolean | ||
### 扩展类型(用字符串表示) | ||
### 扩展类型 | ||
@@ -109,4 +105,9 @@ #### 'MongoId' | ||
## 数组验证 | ||
### 自定义扩展 | ||
使用Validator.use(typename, options) | ||
### 数组验证 | ||
let { error, data } = Validator(["a", "b", "c"], [String]) | ||
@@ -129,3 +130,3 @@ | ||
## 对象验证 | ||
### 对象验证 | ||
@@ -145,3 +146,3 @@ let { error, data } = Validator({ | ||
## and验证 | ||
### and验证 | ||
@@ -175,3 +176,3 @@ let { error, data } = Validator({ | ||
## or验证 | ||
### or验证 | ||
@@ -197,3 +198,3 @@ let { error, data } = Validator({ | ||
## 扩展类型验证 | ||
### 扩展类型验证 | ||
@@ -208,5 +209,16 @@ let { error, data } = Validator({ | ||
### 自定义类型 | ||
## 实例 | ||
Validator.use('Int', { | ||
type({ data }) { | ||
if (Number.isInteger(data)) { | ||
return { data } | ||
} else { | ||
return { err: '必须为Int类型' } | ||
} | ||
}, | ||
}) | ||
### 实例 | ||
# 输入数据 | ||
@@ -213,0 +225,0 @@ let json = { |
333
26418
9
642