优雅、易扩展的异步验证组件。
在实现上借鉴了 joi 和 yup 的 api 风格,重新设计底层实现,具有非常强的扩展性。
npm
npm install acr
yarn
yarn add acr
// 验证多个
const { name, age, gender } = await acr.validate({
name: 'abel',
age: 18,
gender: ''
}, {
name: acr.string().equal('abel'),
age: acr.number().min(16).max(20),
gender: acr.string().in(['male', 'female']).default('male')
});
console.log(name, age, gender); // abel 18 male
// 条件验证
await acr.validate({
name: 'abel',
age: 18,
gender: 'male'
}, {
// 当 name 等于 abel 时,验证 age 是否在 16-20 之间
age: acr.when('name', 'abel', () => {
return acr.number().min(16).max(20);
}),
// 当闭包返回 true 时,验证 gender 必须等于 male
gender: acr.when(data => {
return data['name'] === 'abel';
}, () => {
return acr.string().equal('male');
})
});
// 验证失败处理
try {
await acr.validate({
name: 'abel',
}, {
name: acr.string().equal('zbel'),
});
} catch (error) {
console.log(error); // ValidationError
}
传入配置并创建一个 acr
实例,接下来的一切都在这个实例上完成。
const Acr = require('acr');
const acr = new Acr({
lang: 'zh-cn',
chains: {
string: {
transform: String
}
}
});
egg-acr:基于 acr 实现的 eggjs 版本的异步验证插件。
Name | Website |
---|---|
abel | https://abel.seek.cx |