class-validator中文教程

article/2025/10/6 21:26:29

官方文档:

https://www.npmjs.com/package/class-validator

在这里插入图片描述

class-validator可以说是一个简化验证的依赖库 (采用注释的方式进行校验)

但是缺少中文文档和过程,以自己的理解和对官网文档的阅读进行整理输出。

它的好兄弟class-transformer

class-validator官方提供的方式还不能直接对一个请求的返回值进行校验,它要求必须要是类的一个对象,所以需要做一些处理。
可以将一个json转成指定的类的对象

import { Type, plainToClass } from 'class-transformer';
//plainToClass   json转class
//type  指定隐式类型   
let users = plainToClass(User, userJson); 

1.引入

import {validate,validateOrReject,Contains,IsInt,Length,IsEmail,IsFQDN,IsDate,Min,Max,
} from 'class-validator';   //引入

2.输出类

export class Post {@Length(10, 20)title: string;@Contains('hello')text: string;@IsInt()@Min(0)@Max(10)rating: number;@IsEmail()email: string;@IsFQDN()site: string;@IsDate()createDate: Date;
}                  //导出类

3.声明类并调用类中的方法进行校验

let post = new Post();           //声明一个post
post.title = 'Hello'; // 不通过
post.text = 'this is a great post about hell world'; // 不通过
post.rating = 11; // 不通过
post.email = 'google.com'; // 不通过
post.site = 'googlecom'; // 不通过

4.验证监听

validate(post).then(errors => {// errors is an array of validation errorsif (errors.length > 0) {console.log('validation failed. errors: ', errors);} else {console.log('validation succeed');}
});

5.错误输出

此方法返回一个validationError 对象 每一项如下

{target: Object; // 已经验证的对象.property: string; // 未通过验证的对象属性.value: any; // 未通过验证的值.constraints?: { // 验证失败并带有错误消息.[type: string]: string;};children?: ValidationError[]; // Contains all nested validation errors of the property
}

6.消息

在装饰器下提示指定信息

import { MinLength, MaxLength } from 'class-validator';export class Post {@MinLength(10, {message: 'Title is too short',})@MaxLength(50, {message: 'Title is too long',})title: string;
}

在消息中可以使用特殊的$符号

$value - 正在验证的值
$property - 要验证的对象属性的名称
$target - 要验证的对象的类的名称
$constraint1, $constraint2, ... $constraintN - 由特定验证类型定义的约束

举个栗子 》》》》》》》》》

import { MinLength, MaxLength } from 'class-validator';export class Post {@MinLength(10, {// here, $constraint1 会被替换为最小长度 "10",  $value 会被替换为换取的值message: 'Title is too short. Minimal length is $constraint1 characters, but actual is $value',})@MaxLength(50, {// here, $constraint1 will be replaced with "50", and $value with actual supplied valuemessage: 'Title is too long. Maximal length is $constraint1 characters, but actual is $value',})title: string;
}

7.检验数组的方法

import { MinLength, MaxLength } from 'class-validator';export class Post {@MaxLength(20, {each: true,                   //每项验证})tags: string[];
}

这将验证post.tags数组中的每个项目。

validate函数可以选择一个validatorOptions 作为第二个参数

export interface ValidatorOptions {skipMissingProperties?: boolean;whitelist?: boolean;forbidNonWhitelisted?: boolean;groups?: string[];dismissDefaultMessages?: boolean;validationError?: {target?: boolean;value?: boolean;};forbidUnknownValues?: boolean;           //建议设置为true  防止未知对象通过验证stopAtFirstError?: boolean;
}

http://chatgpt.dhexx.cn/article/AE1Be2qN.shtml

相关文章

Hibernate Validator 总结大全

背景 代码开发过程中,参数的有效性校验是一项很繁琐的工作, 如果参数简单,就那么几个参数,直接通过ifelse可以搞定,如果参数太多,比如一个大对象有100多个字段作为入参,你如何校验呢&#xff1…

java使用validator进行校验

不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空、长度、格式等等)。如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程。幸好jdk或hibernate都…

java validator_Spring中校验器(Validator)的深入讲解

前言 Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用。 应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不…

springboot使用hibernate validator校验

目录 一、参数校验二、hibernate validator校验demo三、hibernate的校验模式 1、普通模式(默认是这个模式)2、快速失败返回模式四、hibernate的两种校验 1、请求参数校验2、GET参数校验(RequestParam参数校验)3、model校验4、对象级联校验5、分组校验五…

Validator 使用总结

介绍 首先说下大家常用的hibernate-validator,它是对JSR-303/JSR-349标准的实现,然后spring为了给开发者提供便捷集成了hibernate-validator,默认在springmvc模块。 依赖 本文所介绍皆在springboot应用的基础上,首先加上web模块…

浅谈 Android Tombstone(墓碑日志)分析步骤

最近项目产品刚刚出货,客户退机、死机事件频发。日常解决bug中,少不了和墓碑日志打交道,截止今天之前,见到墓碑日志都是一脸懵逼,不知道怎么分析。最近又有了两个日志,硬着头皮看吧。之所以称之为浅谈&…

Android tombstone文件是如何生成的

本节内容我们聚焦到androidQ上,分析android中一个用于debug的功能,那就是tombstone,俗称“墓碑”。现实生活中墓碑一般是给死人准备的,而在android系统中“墓碑”则是给进程准备的。 为何Android要设计出这样一个东西呢&#xff…

【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )

文章目录 一、崩溃信息描述二、手机命令行操作三、电脑命令行操作四、Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 ROOT 再说 , 没有 ROOT 权限无法访问该目录中的信息 ; 使用 Pixel 2 手机进行调试 , 其它 ROOT 后的手机也可以使用 …

Android tombstone 分析案例

Android tombstone 分析案例 tombstone文件内容1. 体系结构2. 发生Crash线程3. 原因4. 寄存器状态4.1 处理器工作模式下的寄存器4.2 未分组寄存器r0 – r74.3 分组寄存器r8 – r144.4 程序计数器pc(r15)4.5 程序状态寄存器4.6 ARM参数规则 5. 回溯栈6. 程序栈7. 寄存器地址附近…

RocksDB Tombstone 详解

目录 为什么会有墓碑? 使用场景 原理 描述 分段 查询 优化点 总结 为什么会有墓碑? 我们知道 TP 数据库一般选择 KV 引擎作为存储引擎,数据库的元数据和数据通过一定的编码规则变成 KV 对存储在存储引擎中,比如 CockroachD…

Tombstone 文件分析

Tombstone 文件分析 /* * 下面信息是dropbox负责添加的 **/ isPrevious: true Build: Rock/odin/odin:7.1.1/NMF26F/1500868195:user/dev-keys Hardware: msm8953 Revision: 0 Bootloader: unknown Radio: unknown Kernel: Linux version 3.18.31-perf-g34cb3d1 (smartcmhardc…

android Tombstone 流程

一 总述 下面是一份dump 的log: 810 876 I system_server: libdebuggerd_client: started dumping process 678 740 740 I /system/bin/tombstoned: registered intercept for pid 678 and type kDebuggerdNativeBacktrace 678 678 I libc : Requested du…

android tombstone log分析

今天和大家一起聊聊android 中出现的 Tombstone问题,近期在定制pad 上分析设备概率性重启,导出bugreport日志后,除了看到anr log外,同级目录下还看到了tombstones 并且对比以往日志,发现都生产了大量tombstone...,于是…

深入学习tombstone和signal

三驾马车(CPU,内存和存储设备)中,跑得最慢的就是存储设备了 电脑上,从HDD 到SSD,从SATA SSD到PCIe SSD,硬盘是越来越快; 手机上,从SD卡,到eMMC卡&#xff0…

tombstone

1.什么是tombstone 当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下(Logcat中也会有相…

Tombstone原理分析

本文主要围绕三个问题对tombstone进行分析和介绍,debuggerd是如何监控进程并生成tombstone的?tombstone文件中的信息都是什么,是怎么获取的?tombstone文件应该怎么分析? 一、Tombstone简介 当一个native程序开始执行时…

【date】Linux date命令修改时间的问题

Linux date命令修改时间的问题 问题路径找原因解决方法 问题 Android10;高通平台 使用下面date命令修改时间日期,时分秒生效,年月日不生效 > date -D YYYY-MM-DD hh:mm:ss 路径 \android\external\toybox\toys\posix\date.c \android\e…

i2ctools工具移植到android(使用NDK方式 在某android平台测试)

前提条件 主板i2c已在设备树配置status和引脚复用正常,即设备的i2c总线达到正常使用条件I2C device interface假设内核已配置进去 编译工具链NDK环境搭建 下载NDK 下载地址点我解压 ~/workspace/ndk$ ls android-ndk-r22b android-ndk-r22b-linux-x86_64.zip …

高通平台 Android9 adb shell “hwclock -w“ 报错

hwclock -w 报错 文章目录 hwclock -w 报错问题现象分析1. hwclock命令分析2. /dev/rtc0驱动节点分析 修改设备树后hwclock -w报错没有了,但是系统会重启,原因未知 问题现象 sdm660_64:/ # hwclock -w hwclock: ioctl 4024700a: Invalid argument分析 …

Android top命令、ps命令、busybox命令

top命令 usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]Show process activity in real time.-H Show threads -k Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID) -o Show FIELDS (def PID,USER,PR,N…