async-validator.js数据校验器

文档:

 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 < 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 

 

 
类型    描述
string    Must be of type string. This is the default type.
number    Must be of type number.
boolean    Must be of type boolean.
method    Must be of type function.
regexp    Must be an instance of RegExp or a string that does not generate an exception when creating a new RegExp.
integer    Must be of type number and an integer.
float    Must be of type number and a floating point number.
array    Must be an array as determined by Array.isArray.
object    Must be of type object and not Array.isArray.
enum    Value must exist in the enum.
date    Value must be valid as determined by Date
url    Must be of type url.
hex    Must be of type hex.
email    Must be of type email.
any    Can be any type.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值