前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >class-validator的使用

class-validator的使用

原创
作者头像
挥刀北上
发布2024-04-19 17:32:35
1000
发布2024-04-19 17:32:35
举报
文章被收录于专栏:Node.js开发Node.js开发
class-validator
class-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的使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档