# 验证器定义

为具体的验证场景或者数据表单定义验证器类,直接调用验证类的check方法即可完成验证,下面是一个例子:

我们定义一个LoginValidate验证器类用于登录的验证。

class LoginValidate extends Validate
{
    constructor()
    {
        const rules = {
            'user'  : 'require|mail|max:30',
            'pass'  : 'require|chsDash|length:6,16'
        }
        
        super(rules)
    }
}

可以直接在验证器类中使用super()方法第二个参数定义错误提示信息,例如:


















 



class LoginValidate extends Validate
{
    constructor()
    {
        const rules = {
            'user'  : 'require|mail|max:30',
            'pass'  : 'require|chsDash|length:6,16'
        }

        const message = {
            'user.require' : '用户名必须填写',
            'user.mail'    : '用户名需为邮箱',
            'user.max'     : '你使用了长度过长的邮箱号码',
            'pass.require' : '密码必须填写',
            'pass.chsDash' : '密码格式错误',
            'pass.length'  : '密码长度为6~16个字符',
        }
        super(rules,message)
    }
}

也可以直接修改Msg的值

class LoginValidate extends Validate
{
    rule = {
        'user'  : 'require|mail|max:30',
        'pass'  : 'require|chsDash|length:6,16'
    }
    msg = {
        'user.require' : '用户名必须填写',
        'user.mail'    : '用户名需为邮箱',
        'user.max'     : '你使用了长度过长的邮箱号码',
        'pass.require' : '密码必须填写',
        'pass.chsDash' : '密码格式错误',
        'pass.length'  : '密码长度为6~16个字符',
    }
}

提示

如果没有定义错误提示信息,则使用系统默认的提示信息

# 数据验证

在需要进行登录验证的控制器方法中,添加如下代码即可:

const data = {
    'user' : 'admin@admin.com',
    'pass' : '123456'
};
const login = new LoginValidate();
if(!login.check(data)){
    console.log(login.getError())
}

# 抛出验证异常

默认情况下验证失败后不会抛出异常,如果希望验证失败自动抛出异常,可以在验证器方法中进行设置: 在constructor中添加super.fail = true 或者在检验时添加

if(!login.check(data,true)){
    console.log(login.getError())
}

也可以使用链表操作

login.setFail(true)

设置开启了验证失败后抛出异常的话,会自动抛出ValidateException异常需要自己捕获处理。

# 批量验证

默认情况下,一旦有某个数据的验证规则不符合,就会停止后续数据及规则的验证,如果希望批量进行验证,可以设置setBatch(true)







 





let userValidate = Validate.make({
    "user"        :   "require|length:6,20|chsDash",
    "pass"        :   "require|length:6,20|alphaDash",
    "code"        :   "require|number|length:6"
});

if (!userValidate.setBatch(true).check({
    "user"  :   1,
})){
    console.log(userValidate.getError())
}

默认setBatch(false)情况下输出应该为user长度错误 开启批量验证后,返回数组

[
    { 
        rule: 'length', 
        key: 'user', 
        value: 1, 
        message: 'user长度错误' 
    },
    {
        rule: 'require',
        key: 'pass',
        value: undefined,
        message: 'pass必须填写'
    },
    {
        rule: 'require',
        key: 'code',
        value: undefined,
        message: 'code必须填写'
    }
]