文档:
- https://www.npmjs.com/package/async-validator
- https://github.com/yiminghe/async-validator
安装
npm i async-validator
示例
// demo.mjs
// node(v16.14.0)
// import Schema from 'async-validator';
// fix: 文档给出的引入方式报错
import asyncValidator from 'async-validator';
const Validator = asyncValidator.default;
// 定义校验规则
const rules = {
name: {
type: 'string',
required: true,
validator: (rule, value) => value === 'muji',
},
age: {
type: 'number',
asyncValidator: (rule, value) => {
return new Promise((resolve, reject) => {
if (value {
// validation passed or without error message
console.log('validate passed');
})
.catch(({ errors, fields }) => {
console.log(errors, fields);
});
打印出的校验信息
[
{ message: 'name fails', fieldValue: 'Tom', field: 'name' },
{ message: 'too young', fieldValue: 16, field: 'age' }
] {
name: [ { message: 'name fails', fieldValue: 'Tom', field: 'name' } ],
age: [ { message: 'too young', fieldValue: 16, field: 'age' } ]
}
rule的属性
type
required
pattern
len
enum
min/max
可以使用的 Type
类型描述stringMust be of type string. This is the default type.numberMust be of type number.booleanMust be of type boolean.methodMust be of type function.regexpMust be an instance of RegExp or a string that does not generate an exception when creating a new RegExp.integerMust be of type number and an integer.floatMust be of type number and a floating point number.arrayMust be an array as determined by Array.isArray.objectMust be of type object and not Array.isArray.enumValue must exist in the enum.dateValue must be valid as determined by DateurlMust be of type url.hexMust be of type hex.emailMust be of type email.anyCan be any type.