跳到主要内容

guide

创建日期:2024-02-18 | 最近更新:2024-02-18

安装

npm i async-validator

使用

基本的使用包括 定义一个描述对象,将其分配给 schema,然后传入要验证的数据。

import Schema from 'async-validator';
const descriptor = {
name: {
type: 'string',
required: true,
validator: (rule, value) => value === 'muji',
},
age: {
type: 'number',
asyncValidator: (rule, value) => {
return new Promise((resolve, reject) => {
if (value < 18) {
reject('too young'); // reject with error message
} else {
resolve();
}
});
},
},
};
const validator = new Schema(descriptor);

// callback style
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
return handleErrors(errors, fields);
}
// validation passed
});

// 或者使用PROMISE
validator
.validate({ name: 'muji', age: 16 })
.then(() => {
// validation passed or without error message
})
.catch(({ errors, fields }) => {
return handleErrors(errors, fields);
});

API

Validate

function(source, [options], callback): Promise
  • source: 要验证的数据对象(必传)

  • options: 验证选项(可选)

  • callback: 回调函数(可选) 返回一个 Promise 对象,如果没有回调函数的话。

  • then()验证通过

  • catch({ errors, fields })验证失败,errors 是一个错误数组,fields 是一个对象,包含了每个字段的错误信息。 errors

[
{ "message": "name fails", "fieldValue": 12, "field": "name" },
{ "message": "too young", "fieldValue": 11, "field": "age" }
]

fields

{ "name": [{ "message": "name fails", "fieldValue": 12, "field": "name" }], "age": [{ "message": "too young", "fieldValue": 11, "field": "age" }] }

Options

  • suppressWarning: 如果设置为 true,那么当验证规则不存在时,将不会打印警告信息。默认为 false。
  • first: 如果设置为 true,那么每个字段验证失败后只返回一个错误信息。默认为 false,即返回所有错误信息。
  • firstFields: 如果设置为 true,那么每个字段第一个验证失败后只返回一个错误信息。默认为 false,即返回所有错误信息。