class-validator-helper
本工具主要是基于class-validator和class-transformer做了一层简单的封装,让用户可以快速对json格式的数据进行校验,并打印出具体的参数位置。
快速入门
以下代码body没有传递address.area参数:
import { Validate } from 'class-validator-helper';import {IsString,ValidateNested,IsNotEmpty,} from 'class-validator';import { Type } from 'class-transformer';class CreateUserBody$Address {@IsString()@IsNotEmpty()province: string;@IsString()@IsNotEmpty()city: string;@IsString()@IsNotEmpty()area: string;@IsString()@IsNotEmpty()detail: string;}class CreateUserBody {@IsString()@IsNotEmpty()name: string;@IsNotEmpty()@ValidateNested()@Type(() => CreateUserBody$Address)address: CreateUserBody$Address;}const body = {name: 'Reid',address: {province: '广东省',city: '广州市',detail: '开心花园'}};(async () => {await Validate(CreateUserBody, body);})();
故会报错抛出一个Error,方括号的内容为具体的参数位置,而前面是class-validator默认的提示信息,本工具会陆续取出错误信息(每次报错只会随机获取一个),直到没有错误为止:
Error: area should not be empty [address.area]
函数
Validate(schema, data)
schema- 结构,传入一个
class,用class-validator的装饰器进行装饰。
- 结构,传入一个
data- 数据,具体的
json数据。
- 数据,具体的
其他示例
数组提示
以下示例addresses的第二个元素没有area字段:
import { Validate } from 'class-validator-helper';import {IsString,ValidateNested,IsNotEmpty,} from 'class-validator';import { Type } from 'class-transformer';class CreateUserBody$Address {@IsString()@IsNotEmpty()province: string;@IsString()@IsNotEmpty()city: string;@IsString()@IsNotEmpty()area: string;@IsString()@IsNotEmpty()detail: string;}class CreateUserBody {@IsNotEmpty()@ValidateNested({ each: true })@Type(() => CreateUserBody$Address)addresses: CreateUserBody$Address[];}const body = {addresses: [{province: '广东省',city: '广州市',area: '越秀区',detail: '开心花园'}, {province: '广东省',city: '揭阳市',detail: '开心农场'}]};(async () => {await Validate(CreateUserBody, body);})();
抛出的错误信息:
Error: area should not be empty [addresses.1.area]
