class-validator的使用

2024-04-19 17:32:35 浏览数 (1)

class-validatorclass-validator

在使用nestjs开发应用时,我们一般需要对前端提交的数据进行验证,此时就需要用到class-validator这个库了。

首先看一段实例代码:

代码语言:typescript复制
import { IsInt, Min, Length, validate } from 'class-validator';

class Book {
    @Length(10, 20)
    title: string;

    @IsInt()
    @Min(0)
    rating: number;
}

let book = new Book();
book.title = '短标题'; // 验证错误,标题太短
book.rating = -1; // 验证错误,评分低于最低限制

validate(book).then(errors => {
    if (errors.length > 0) {
        console.log('验证失败:', errors);
    } else {
        console.log('验证通过');
    }
});

1、首先导入了class-validator包中的一些常用装饰器,这些装饰器一般是用在类的属性上。

2、定义一个类,用上面导出的装饰器进行装饰,起到约束定义的作用。

3、根据定义的类生成一个对象,注意这里的对象是类生成的对象,而不是字面量对象。

4、用validate方法验证上一步的对象,validate会根据对象找到生成此对象的类,然后根据类属性修饰符,对对象的相应属性进行验证,并输出结果。

到此为止,我们了解了class-validator的基本使用。但是这里我们产生了一个疑问?

前端提交的数据,经过程序解析,一般都是一个字面量对象,如果直接使用validate进行验证,validate是找不到字面量对象的生成类的,所以就谈不上验证。那怎么办呢?

此时我们需要将字面量对象转化为类对象,并且是class-validator中的修饰符修饰过的类的对象,怎么办呢?

此时我们需要另外一个库class-transformer。

class-transformer这个库的作用就是将对象转化为类对象,在转化过程中可以做一些过滤约束等等操作。

我们下片文章来讲解class-transformer的使用。

0 人点赞