check-data
Advanced tools
Comparing version 1.6.10 to 1.6.11
59
index.js
"use strict" | ||
let validator = require('validator') | ||
let methods = require('./methods') | ||
let Options = require('./options') | ||
let filterNull = require('./filterNull') | ||
@@ -15,5 +13,4 @@ | ||
* @param {Object} handler 导出数据自定义处理方法 | ||
* @param {Function} callback 附加回调函数(用于全局参数注入) | ||
*/ | ||
function Validator(data, options, handler = {}, callback) { | ||
function Validator(data, options, handler = {}) { | ||
@@ -27,4 +24,4 @@ // 递归验证 | ||
// data对象空值过滤 | ||
output.data = filterNull(output.data) | ||
// 对象空值过滤(直接修改导入对象本身) | ||
filterNull(output.data) | ||
@@ -37,2 +34,3 @@ // 数据构造器 | ||
let outData = options.call(output.data) | ||
// 对象空值过滤 | ||
output[name] = filterNull(outData) | ||
@@ -42,7 +40,2 @@ } | ||
// 附加回调函数 | ||
if (callback) { | ||
callback(output.data) | ||
} | ||
return output | ||
@@ -107,3 +100,3 @@ | ||
// 选项为验证表达式(type作为保留关键字,只允许定义数据类型,不能作为参数名使用) | ||
// 选项为验证表达式(type作为内部保留关键字,不能作为参数名使用,否则会产生) | ||
if (options.type) { | ||
@@ -141,6 +134,6 @@ | ||
// type为构造函数或字符串(字符串用于表示自定义数据类型) | ||
if (Options[options.type]) { | ||
// type为内置构造函数或字符串(字符串用于表示自定义数据类型) | ||
if (methods[options.type]) { | ||
let funObj = Options[options.type] | ||
let funObj = methods[options.type] | ||
for (let name in options) { | ||
@@ -250,3 +243,3 @@ let fun = funObj[name] | ||
// 选项为构造函数或字符串(字符串用于表示自定义数据类型) | ||
else if (Options[options]) { | ||
else if (methods[options]) { | ||
@@ -257,3 +250,3 @@ if (data === undefined || data === '') { | ||
let { err, data: subData } = Options[options].type({ data }) | ||
let { err, data: subData } = methods[options].type({ data }) | ||
if (err) { | ||
@@ -272,30 +265,2 @@ return { | ||
// /** | ||
// * 通过Path获取数据 | ||
// * @param {*} data 数据源 | ||
// * @param {String} path 数据路径 | ||
// */ | ||
// function pathGetData(data, path) { | ||
// let pathArray = path.split('.') | ||
// for (let key of pathArray) { | ||
// if (data[key] === undefined) { | ||
// return undefined | ||
// } else { | ||
// data = data[key] | ||
// } | ||
// } | ||
// return data | ||
// } | ||
// // 设置选项 | ||
// Validator.config = function ({ language }) { | ||
// if (language) { | ||
// } else { | ||
// } | ||
// } | ||
// // 自定义扩展 | ||
@@ -311,4 +276,2 @@ // Validator.middleware = [] | ||
// console.log(Validator.middleware) | ||
module.exports = Validator |
{ | ||
"name": "check-data", | ||
"version": "1.6.10", | ||
"version": "1.6.11", | ||
"description": "JS数据验证器", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -30,3 +30,3 @@ ## Installation | ||
> 如果只想验证数据类型,可以直接在参数值上用数据类型赋值,可参考示例中search参数 | ||
> 如果只想验证数据类型,可以直接在参数值上用数据类型赋值 | ||
@@ -81,3 +81,3 @@ ### 通用选项 | ||
#### 'ObjectId' | ||
#### 'MongoId' | ||
@@ -98,3 +98,3 @@ > 验证mongodb中的ObjectId | ||
let data = { | ||
let json = { | ||
"username": "测试", | ||
@@ -104,2 +104,16 @@ "tenderNum": "123456789987", | ||
"files": ["abc.js", "334", "null", "666", , , "kkk.js"], | ||
"user": { | ||
"username": "莉莉", | ||
"age": 18, | ||
}, | ||
"list": [ | ||
{ | ||
"username": "吖吖", | ||
"age": 16, | ||
}, | ||
{ | ||
"username": "可可", | ||
"age": 15, | ||
} | ||
], | ||
"auth": { | ||
@@ -131,3 +145,3 @@ "weixin": "abc", | ||
let { error, data, filter } = Validator(data, | ||
let { error, data, filter } = Validator(json, | ||
{ | ||
@@ -145,2 +159,10 @@ "username": { | ||
}, | ||
"user": { | ||
"username": String, | ||
"age": Number, | ||
}, | ||
"list": [{ | ||
"username": String, | ||
"age": Number, | ||
}], | ||
"auth": { | ||
@@ -230,5 +252,3 @@ "weixin": String, | ||
}, { | ||
$: { | ||
type: Boolean, | ||
} | ||
$: Boolean, | ||
}) | ||
@@ -235,0 +255,0 @@ |
85
test.js
@@ -5,12 +5,22 @@ "use strict" | ||
let query = { | ||
let json = { | ||
"tenderName": "测试", | ||
// "tenderNum": "123456789987", | ||
"tenderNum": "123456789987", | ||
"tenderEndTime": "2017-07-07T09:53:30.000Z", | ||
"files": ["abc.js", "334", "null", "666", "12"], | ||
"auth": { | ||
"weixin": "llll", | ||
"user": { | ||
"username": "莉莉", | ||
"age": 18, | ||
}, | ||
"beneficiariesName": "莉莉", | ||
"guaranteeMoney": "2", | ||
"list": [ | ||
{ | ||
"username": "吖吖", | ||
"age": 16, | ||
}, | ||
{ | ||
"username": "可可", | ||
"age": 15, | ||
} | ||
], | ||
"money": "2", | ||
"guaranteeFormat": 0, | ||
@@ -29,3 +39,3 @@ "addressee": "嘟嘟", | ||
"abc": { | ||
a: "1", | ||
a: "112", | ||
b: 2, | ||
@@ -38,3 +48,3 @@ c: true, | ||
let { error, data, filter } = Validator(query, | ||
let { error, data, filter } = Validator(json, | ||
{ | ||
@@ -61,11 +71,11 @@ "tenderName": { | ||
}, | ||
"auth": { | ||
"weixin": String, | ||
"user": { | ||
"username": String, | ||
"age": Number, | ||
}, | ||
"beneficiariesName": { | ||
"type": String, | ||
"name": "xxx", | ||
"allowNull": false, | ||
}, | ||
"guaranteeMoney": { | ||
"list": [{ | ||
"username": String, | ||
"age": Number, | ||
}], | ||
"money": { | ||
"type": Number, | ||
@@ -113,9 +123,7 @@ // "min": 15, | ||
method(value) { | ||
return [value, , , , , "7777"] | ||
return [value, , null, , undefined, 666] | ||
} | ||
}, | ||
"abc": { | ||
"$": { | ||
type: Number, | ||
} | ||
"$": Number, | ||
} | ||
@@ -130,32 +138,9 @@ }, | ||
"test": { | ||
a: 1, | ||
b: undefined, | ||
c: "", | ||
d: null, | ||
e: NaN, | ||
e: 0, | ||
}, | ||
$or() { | ||
if (search) { | ||
if (search.match(/^\d+$/)) { | ||
return [ | ||
{ tenderNum: new RegExp(search) }, | ||
{ projectNum: new RegExp(search) }, | ||
{ tenderProjectNum: new RegExp(search) } | ||
] | ||
} else { | ||
return [ | ||
{ tenderName: new RegExp(search) }, | ||
{ projectName: new RegExp(search) }, | ||
{ tenderProjectName: new RegExp(search) } | ||
] | ||
} | ||
} | ||
}, | ||
totalAmount() { | ||
return { | ||
$gt: /12/, | ||
$lt: 666, | ||
} | ||
}, | ||
v1: 1, | ||
v2: undefined, | ||
v3: "", | ||
v4: null, | ||
v5: NaN, | ||
v6: 0, | ||
} | ||
} | ||
@@ -162,0 +147,0 @@ } |
307
26420
630