@ckpack/parameter
通过简单的配置就可以验证参数
import { Parameter } from '@ckpack/parameter';
const parameter = new Parameter();
const rule = {
isAdmin: 'boolean',
age: {
type: 'int',
min: 0,
max: 200,
},
ids: {
type: 'array',
itemType: 'int',
itemRule: {
min: 1
}
}
}
const data = {
isAdmin: true,
age: 18,
ids: ['1', '2', '3']
};
const errors = parameter.validate(rule, data);
如果类型为int
,则有以下选项规则
max
- 值的最大值,值必须 <= max
min
- 值的最小值,值必须 >= min
{
score: 'int',
}
// or
{
score: {
type: 'int',
min: 0,
max: 200,
}
}
如果类型为number
,则有以下选项规则
max
- 值的最大值,值必须 <= max
min
- 值的最小值,值必须 >= min
{
score: 'number',
}
// or
{
score: {
type: 'number',
min: 0,
max: 100,
}
}
如果类型为string
,则有以下选项规则
regex
- 检查字符串格式的正则表达式max
- 字符串的最大长度min
- 字符串的最小长度{
username: 'string',
}
// or
{
username: {
type: 'string',
regexp: /\S{4,20}/
}
}
检查是否是boolean
类型
{
isAll: 'boolean',
}
// or
{
isAll: {
type: 'boolean',
}
}
如果类型是数组,则有以下选项规则
itemType
- 此数组中每个项目的类型itemRule
- 此规则中每个项目的规则itemChecker
- 每个项目的检查器,在这种情况下,您可以省略 itemType
和 itemRule
max
- 数组的最大长度min
- 数组的最小长度{
ids: {
itemType: 'int',
itemRule: {
min: 1,
max: 1000,
},
min: 0,
max: 100,
}
}
如果类型是enum
,则有以下规则
enum
- 数组,其中的值必须为其中一个{
sex: ['man', 'woman']
}
// or
{
sex: {
type: 'enum'
enum: ['man', 'woman']
}
}
如果类型是对象,则有以下规则
rule
- 验证对象属性的对象
{
people: {
type: 'object',
rule: {
name: 'string',
age: {
isRequired: false,
type: 'int',
min: 1,
max: 200
}
}
}
}
你也可以定义自定义验证类型
import { Parameter } from '@ckpack/parameter';
const parameter = new Parameter();
// 验证是否为偶数
parameter.addRule('even', (rule, value) => {
return value % 2 === 0 ? null : `${value} is not even`;
});
// rule
{
someNumber: 'even'
}
// or
{
someNumber: {
type: "even",
}
}
对于自定义验证类型你也可以添加参数如:
import { Parameter } from '@ckpack/parameter';
const parameter = new Parameter();
// 验证能否被某个数字整除
parameter.addRule('times', (rule, value) => {
const { times } = rule;
return value % times === 0 ? null : `not an integer multiple of ${times}`;
});
// rule
{
someNumber: {
type: "times",
times: 3,
}
}
=
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.