class Validator {
static add (name, fn) {
Validator.prototype[name] = fn
}
constructor () {}
validate (data, rules) {
let errors = {}
rules.forEach((rule) => {
let value = data[rule.key]
if (rule.required) {
let error = this.required(value)
if (error) {
ensureObject(errors, rule.key)
errors[rule.key].required = error
return
}
}
// 遍歷 validators,并逐一調(diào)用對應(yīng)的函數(shù)
let validators = Object.keys(rule).filter(key => key !== 'key' && key !== 'required')
validators.forEach((validatorKey) => {
if (this[validatorKey]) {
let error = this[validatorKey](value, rule[validatorKey])
if (error) {
ensureObject(errors, rule.key)
errors[rule.key][validatorKey] = error
}
} else {
throw `不存在的校驗器: ${validatorKey}`
}
})
})
return errors
}
required (value) {
if (value !== 0 && !value) {
return '必填'
}
}
pattern (value, pattern) {
if (pattern === 'email') {
pattern = /^.+@.+$/
}
if (pattern.test(value) === false) {
return '格式不正確'
}
}
minLength (value, minLength) {
if (value.length < minLength) {
return '太短'
}
}
maxLength (value, maxLength) {
if (value.length > maxLength) {
return '太長'
}
}
}
function ensureObject (obj, key) {
if (typeof obj[key] !== 'object') {
obj[key] = {}
}
}
export default Validator
validator
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來献联,“玉大人,你說我怎么就攤上這事何址±锬妫” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵用爪,是天一觀的道長原押。 經(jīng)常有香客問我,道長偎血,這世上最難降的妖魔是什么诸衔? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮颇玷,結(jié)果婚禮上笨农,老公的妹妹穿的比我還像新娘。我一直安慰自己帖渠,他們只是感情好谒亦,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著空郊,像睡著了一般份招。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狞甚,一...
- 文/蒼蘭香墨 我猛地睜開眼巩步,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桦踊?” 一聲冷哼從身側(cè)響起椅野,我...
- 正文 年R本政府宣布熄攘,位于F島的核電站兽愤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挪圾。R本人自食惡果不足惜浅萧,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哲思。 院中可真熱鬧洼畅,春花似錦、人聲如沸棚赔。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽忆嗜。三九已至己儒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捆毫,已是汗流浹背闪湾。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 在寫程序的時候經(jīng)常需要進(jìn)行數(shù)據(jù)校驗,比如服務(wù)端對http請求參數(shù)校驗裆站,數(shù)據(jù)入庫時對字段長度進(jìn)行校驗条辟,接口參數(shù)校驗,...
- 工作的需要:由于mongodb文檔格式靈活宏胯,缺乏關(guān)系型數(shù)據(jù)庫的范式與數(shù)據(jù)檢查約束羽嫡,因而必須在代碼層面做數(shù)據(jù)約束。于...
- validator百度博客一大堆,本文是摘取的部分內(nèi)容結(jié)合在項目中使用的經(jīng)驗. 一.導(dǎo)入maven依賴 二.給需要...
- 2018年12月的第一天肩袍,冬天的太陽暖暖的杭棵,我需穿過玻璃隔斷的同事的辦公司來遠(yuǎn)遠(yuǎn)地望著這冬日里燦爛的陽光,由于自己...
- 這幾天持續(xù)失眠。 無論是午休還是晚上睡覺都翻來覆去的睡不著艰管。 想了很多事情滓侍。 我開始明白,以前自己太多事不懂蛙婴,很容...