当前位置: 首页 > 工具软件 > validator-js > 使用案例 >

async-validator.js数据校验器

岳君之
2023-12-01

文档:

安装

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 < 18) {
          reject('too young'); // reject with error message
        } else {
          resolve();
        }
      });
    },
  },
};

const validator = new Validator(rules);

let data = { name: 'Tom', age: 16 };

validator
  .validate(data)
  .then(() => {
    // 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 Date
urlMust be of type url.
hexMust be of type hex.
emailMust be of type email.
anyCan be any type.
 类似资料: