npm 包 class-transformer-validator 使用教程

什么是 class-transformer-validator

class-transformer-validator 是一个基于 TypeScript 且使用装饰器语法的 npm 包,它可以通过装饰器来帮助我们轻松地将 object 转换为 class instance,同时也支持对该 class instance 进行数据验证和类型约束。

安装

--- ------- ----------------- --------------- ---------------------------

基本用法

假设我们需要定义一个 User 类来保存用户的信息,该类需要有一个 name 属性和一个 age 属性。

------ - --------- -------- - ---- ------------------
------ - ---------- ---- - ---- --------------------

----- ---- -
  -----------
  ------------------ ------- -- -------------
  ----- -------

  -----------
  -------- -- -------
  ---- -------
-

上述代码中,我们使用了 @IsString 和 @IsNumber 这两个装饰器来指定 User 类的属性类型,在这段代码中我们同时使用了 @Transform 和 @Type 两个装饰器来转换值,@Transform 装饰器会在将值赋给属性前对值进行一些预处理,而 @Type 装饰器则指定了值的类型。

接下来我们可以用 class-transformer-validator 提供的 validateOrReject 方法来对 User 对象进行验证,代码如下:

------ - ---------------- - ---- ------------------
------ - ------------ - ---- --------------------

----- ---- - ------------------ - ----- -  ---  -- ---- ---- ---
----------------------
  -------- -- ----------------- -- --------
  ------------- -- ----------------- -- --------- ---------

上述代码中,我们使用了 class-transformer 提供的 plainToClass 将普通 JavaScript 对象转换为 User 类的实例,之后我们调用了 validateOrReject 方法来验证实例是否符合规定的类型和约束,如果符合规定,那么打印出 user is valid,否则打印出 user is invalid 和错误信息对象。

进阶用法

自定义验证器

defaultValidators 里带了很多基础的验证函数,然而,对于一些定制化的验证要求,比如需要验证一个字符串是否为纯数字,就需要我们自己定义一些验证器。

------ - ------------------ ------------------- - ---- ------------------

------ -------- -------------------------------- ------------------ -
  ------ ---------------- ------- ------------- ------- -
    -------------------
      ----- ---------------
      ------- -------------------
      ------------- -------------
      -------- ------------------
      ---------- -
        --------------- ---- ----- -------------------- -
          ----- --- - -----------
          ------ ----------------
        --
        -------------------- -------------------- -
          ------ ----------------- ------ ------- ---- --------
        --
      --
    ---
  --
-

在上述代码中,我们编写了一个 validate 方法来验证一个字符串是否为纯数字,之后我们通过 registerDecorator 方法将该验证器装饰器化,并将其作为自定义验证器应用在 User 类的属性 name 上。

------ - --------- -------- - ---- ------------------
------ - ---------- ---- - ---- --------------------

----- ---- -
  -----------
  ------------------ ------- -- -------------
  ----- -------

  -----------
  -------- -- -------
  ---- -------

  ---------------
  ------ -------
-

在上述代码中,我们将自定义的验证器 @IsOnlyNumber 应用在了 User 类的 phone 属性上。

自定义消息

默认情况下,class-validator 提供的验证器返回的错误消息并不友好,我们需要对这些消息进行自定义。对于一个验证器的错误消息,我们可以在装饰器中传递一个 options 对象,来指定这个错误消息的具体信息。

------ - ------------ - ---- -----------------

----- ---- -
  ---------------
    -------- ----- ----- ------ ------- ---- ------- --- --- --------
  --
  ------ -------
-

上述代码中,我们在 @IsOnlyNumber 装饰器中传递了一个 options 对象,它包含了我们自定义的消息。在这个消息中,$value 会被替换为验证错误的具体值。

总结

以上就是使用 class-transformer-validator 的基本和进阶用法,这个 npm 包可以帮助我们轻松地进行数据验证和类型约束,大大提高了代码的健壮性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/202080


猜你喜欢

  • npm 包 @types/koa__cors 使用教程

    介绍 @types/koa__cors 是 Koa 框架的一个 npm 包,它提供了一种简单、易用的方式来让你的 Koa 应用程序开启 跨域资源共享(CORS)。它遵循 Node.js 的一个流行概念...

    5 年前
  • npm 包 not-type-of 使用教程

    什么是 not-type-of? not-type-of 是一个用于 JavaScript 类型判断的 npm 包。与 JavaScript 的 typeof 运算符相比,not-type-of 返回...

    5 年前
  • 使用 Koa-Socket.io 构建实时 Web 应用

    在现代 Web 开发中,实时响应和即时通信已经变得越来越重要。而 Socket.IO 是一个支持双向、实时通信的库,它很容易与 Node.js 框架 Koa 集成使用。

    5 年前
  • npm 包 koa-socket-session 使用教程

    前言 在现代 Web 应用程序中,实时通信已经成为了必备功能。为此,开发者们需要一些库和工具来实现这个功能,koa-socket-session 就是其中之一。本文就会介绍如何使用 koa-socke...

    5 年前
  • npm包 tsconfig-lint使用教程

    前言 在前端开发中,我们常常使用 TypeScript 来帮助我们编写更为可靠的代码。同时,我们也想保证代码能够被其他人正确的阅读和理解。而在这个背景下,我们就需要使用 Lint 工具来帮助我们检测代...

    5 年前
  • npm 包 snmp-native 使用教程

    在 Web 应用程序开发中,一些必要的技术和库是不可避免的,其中一个是 Simple Network Management Protocol(简称 SNMP)。 SNMP 是一种用于管理网络设备的标准...

    5 年前
  • npm 包 os-utils 使用教程

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,具有轻量、可伸缩性强等优点,越来越受前端开发者的欢迎。而 npm (Node Package Manager) 则...

    5 年前
  • npm 包 @types/fs-readdir-recursive 使用教程

    在前端开发中,经常需要处理文件系统的操作。而 @types/fs-readdir-recursive 这个 npm 包,可以帮助我们更方便地进行文件遍历和管理。本文将介绍如何使用 @types/fs-...

    5 年前
  • npm 包 @types/archiver 使用教程

    在前端开发中,我们经常需要进行文件的打包、压缩等操作。而 Node.js 中有一个很好用的打包库 archiver,它能让我们轻松地对文件进行打包、压缩操作。不过,当我们使用 TypeScript 进...

    5 年前
  • npm 包 @akashic/akashic-engine 使用教程

    前言 在Web开发中,前端引擎是非常重要的一个组件。引擎可以帮助开发者快速构建游戏、动画、音视频等多种应用类型。而 @akashic/akashic-engine 是一个非常好用的前端引擎 npm 包...

    5 年前
  • NPM包 @akashic/akashic-cli-export-zip 使用教程

    在前端开发过程中,我们常常需要将项目打包成zip文件方便共享和部署。而 @akashic/akashic-cli-export-zip 就是一款能够快速实现该功能的npm包。

    5 年前
  • npm 包 @akashic/akashic-cli-commons 使用教程

    作为前端开发人员,我们熟悉 npm 这个包管理工具。通过使用 npm,我们可以在项目中引入依赖的第三方模块,这样可以大大提高我们的开发效率。而今天我要介绍的是一个叫做 @akashic/akashic...

    5 年前
  • npm 包 hpp 使用教程

    前言 在前端开发中,我们常常需要处理表单或查询参数,然而这些参数中可能存在恶意内容,如 SQL 注入、XSS 等,从而导致应用程序出现漏洞,为了防范这种情况,我们需要对参数进行安全过滤。

    5 年前
  • npm 包 @acastellon/vcs 使用教程

    介绍 @acastellon/vcs 是一个用于前端版本控制的 npm 包。其提供了一系列的 API,可以帮助我们对项目的版本进行管理,让我们轻松的进行版本的切换、回滚等操作。

    5 年前
  • npm 包 @acastellon/ldap 使用教程

    介绍 @acastellon/ldap 是一个基于 Node.js 平台的 npm 包,它提供了一种简单、快捷的方式来连接和操作 LDAP 服务器。LDAP(轻量级目录访问协议)是一种广泛应用于身份认...

    5 年前
  • npm 包 @acastellon/cors 使用教程

    简介 CORS (Cross-Origin Resource Sharing) 是一个跨域资源共享机制,可以让浏览器绕过同源策略,从而实现跨域访问。在前端开发中,跨域访问是很常见的需求,因此 CORS...

    5 年前
  • npm 包 @acastellon/auth 使用教程

    介绍 在前端开发过程中,登录认证是一个非常常见的需求。为了方便开发者快速实现身份认证功能,@acastellon/auth 这个 npm 包被开发出来。本文将介绍如何使用这个包进行身份认证。

    5 年前
  • NPM 包 User 使用教程

    如今,NPM 已成为了前端开发必不可少的工具之一。在这些工具中,NPM 包的使用无疑是最为普遍和重要的。本文将主要讲解如何使用 NPM 包,并提供一些实用的示例代码和指导意义。

    5 年前
  • npm 包 @a-z.ren/event-hub 使用教程

    在前端开发中,我们经常需要处理事件的传递、监听、分发等操作。而 @a-z.ren/event-hub 就是一个非常实用的 npm 包,它提供了一种方便的方式来管理事件的处理过程。

    5 年前
  • npm 包 virtualenv 使用教程

    在前端开发中,我们常常需要使用多个不同的工具和框架来完成我们的工作。而这些工具和框架可能需要不同的依赖库或版本,这就导致了依赖库的问题,特别是当我们需要开发多个项目时。

    5 年前

相关推荐

    暂无文章