目录
async-validator
一个用于表单异步校验的库,参考了 https://github.com/freeformsystems/async-validate
API
下述内容来自于 async-validate. 的早期版本
Usage 使用方法
基本的使用方法:定义一个 descriptor,将它传入 schema,得到一个 validator。将需要校验的对象和回调传入 validator.validate 方法中。
注:descriptor 是对校验规则的描述,validator 是根据校验规则得到的校验器
Install
npm i async-validator
Usage
基本的使用方法:定义一个 descriptor,将它传入 schema,得到一个 validator。将需要校验的对象和回调传入 validator.validate 方法中。
var schema = require('async-validator');
var descriptor = {
name: {
type: "string",
required: true,
validator: (rule, value) => value === 'muji',
},
};
var validator = new schema(descriptor);
validator.validate({name: "muji"}, (errors, fields) => {
if(errors) {
// validation failed, errors is an array of all errors
// fields is an object keyed by field name with an array of
// errors per field
// 校验未通过的情况,errors 是所有错误的数组
// fields 是一个 object,以字段作为 key 值,该字段对应的错误数组作为 value
// (其实 fields 就是把 errors 按照原对象的 key 值分组)
return handleErrors(errors, fields);
}
// validation passed
// 这里说明校验已通过
});
// PROMISE USAGE
// Promise 式用法
validator.validate({
name: "muji",
asyncValidator: (rule, value) => axios.post('/nameValidator', { name: value }),
}, (errors, fields) => {
if(errors) {
// validation failed, errors is an array of all errors
// fields is an object keyed by field name with an array of
// errors per field
// 校验未通过的情况,errors 和 fields 同上
return handleErrors(errors, fields);
}
// validation passed
// 校验通过
})
.then(() => {
// validation passed
// 校验通过
})
.catch(({ errors, fields }) => {
return handleErrors(errors, fields);
})
API
Validate
function(source, [options], callback): Promise
- source: 需要校验的对象(必填).
- options: 校验选项(可选).
- callback: 校验完成时的回调(必填).
方法返回一个 Promise 对象:
- then(),说明校验通过
- catch({ errors, fields }),校验未通过,errors, fields 含义见前面示例
Options 选项
suppressWarning: 布尔值,是否抑制有关无效值的内部警告。
first: 布尔值,当第一个验证规则生成错误时调用回调函数,不再处理更多的验证规则。如果您的验证涉及多个异步调用(例如数据库查询)并且只需要第一个错误,请使用此选项。
firstFields: 布尔值|字符串数组,当指定字段的第一个验证规则生成错误时调用回调函数,不再处理同一字段的更多验证规则。true 表示所有字段。
Rules
Rules 也可以是用于校验的函数
function(rule,