如何在 Nestjs 上使用一个路由和多个 dto?

2024-02-23

目前我正在使用 NestJS 构建 Restful api。 我有一个ValidationPipe问题。它仅适用于控制器方法,不适用于服务方法。

我需要针对不同的情况做出选择DTO class (UserCreateDTO, StaffCreateDTO,...) 对于每个ROLE(管理员、员工、用户)route.


管道仅适用于控制器,不能将它们与服务一起使用。但你可以只使用类验证器validate方法(与类转换器一起plainToClass方法)在代码中的任何位置:

const user = plainToClass(UserCreateDto, userRequestEntity);
const errors = await validate(user)
if (errors.length > 0) {
  throw this.createError(errors);
}

此外,您不需要为不同的角色创建多个 DTO 类。只需使用class-validator groups https://github.com/typestack/class-validator#validation-groups:

将 DTO 中的每个属性分配给一个或多个组(= 角色):

@Min(12, {groups: ['admin', 'staff']})
age: number;
@Length(2, 20, {groups: ['admin']})
name: string;

然后将您的组(角色)传递给plainToClass and validate.

// Pass your roles as groups
const groups = ['admin'];

// Transform to class with groups
const entityClass = plainToClass(EntityDto, entity, { groups })

// Validate with groups
const errors = await validate(entityClass, { groups });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Nestjs 上使用一个路由和多个 dto? 的相关文章

随机推荐

  • matplotlib imshow():如何制作动画?

    我发现了这个精彩的动画简短教程 http jakevdp github io blog 2012 08 18 matplotlib animation tutorial http jakevdp github io blog 2012 08
  • 将 MySQL 架构作为 CoreData 数据模型导入 Xcode

    我有一个现有的 MySQL 数据库 我想将架构导入 Xcode 并创建一个核心数据 http developer apple com macosx coredata html数据模型 有没有办法 工具 流程 来导入CREATE声明 这样我就
  • C++11 是否允许向量

    容器要求已从 C 03 更改为 C 11 虽然 C 03 具有全面的要求 例如向量的复制构造性和可分配性 但 C 11 定义了每个容器操作的细粒度要求 第 23 2 节 因此 您可以例如 只要您只执行某些不需要赋值的操作 构造和push b
  • 如何删除没有本地跟踪分支的远程分支?

    如何在没有本地跟踪分支的情况下删除所有远程分支 我有大约 30 个没有本地分支 已删除 的远程分支和 20 个跟踪到远程的本地分支 我找到了几篇关于如何做相反的事情的帖子 编辑 寻找一个单行来解决这个问题 这样我就不必手动一一删除这些分支
  • 404 Page Not Found 您请求的页面未找到。代码点火器[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我在 co
  • 从投影仪闪光灯执行外部 exe

    我们有一个从 AS3 编译的投影仪应用程序 exe 我们如何从投影仪启动另一个 外部 可执行文件 这是代码 它没有做任何可见的事情 Play ACQ Demo Acq addEventListener MouseEvent CLICK cl
  • JavaFX 媒体播放器不播放视频

    Using OpenJFX 11我正在使用媒体播放器在 Linux 系统上播放一些剪辑 其中一些显示 另一些则不显示 据我所知 编码的唯一区别是 未播放的视频包含音轨 这是的输出mediainfo对于播放的视频 General Comple
  • 通过 boost graph 将向量变量导出到图形

    我想导出一个存储字符串值序列的向量来增强图 点文件 最后四行可以解释问题 所需的帮助 我知道代码是错误的 但需要指导来解决这个问题 我想将向量 toponodedist2 存储到图形点文件 这里我想存储一个数组 向量 它将存储索引处的值序列
  • Angular 9 HttpErrorResponse 'JSON.Parse 错误',而响应正常

    为什么这会引发错误 deleteUser userId string this dataService deleteUser userId subscribe response string gt console log response
  • 如何在 Rust 中对向量的元素运行 for 循环并更改 for 循环内部和 for 循环外部的向量?

    我是新来的Rust 我需要在 for 循环之前创建一个向量 在其上运行 for 循环 更改 for 循环内的向量 然后在 for 循环之后更改向量 我尝试了以下代码并尝试使用不可变借用 但两者都不起作用 fn main let mut ve
  • Xcode 4.3 的 pngcrush 在哪里?

    有一个苹果定制版本pngcrush在 4 3 之前的每个 Xcode 版本中 我在 Xcode 4 3 中找不到它 它仍然可以作为独立的吗exe file 另一个相关问题 文件来自哪里Command Line Tools for Xcode
  • 没有访问修饰符的方法

    好吧 这让我很烦恼 我知道我在某处读过它 但谷歌没有帮助 未指定访问修饰符的方法的可访问性级别是多少 void Foo code 我想说internal但我不是100 确定 默认可访问性type is internal 但该类型的默认可访问
  • 如何在 Promela - SPIN 中将 LTL 转换为 Automato?

    如何将 LTL 转换为 PROMELA 中的自动机 我知道使用命令 SPIN f ltl x 可以将 LTL 转换为 never 声明 但我想要 LTL 的自动机而不是否定的自动机 如果我之前否定 LTL 以生成 never 声明 则这是正
  • 为什么int array[1000][1000]是C程序中的内存问题? [复制]

    这个问题在这里已经有答案了 Why int array 1000 1000 C 程序中声明时存在内存问题main方法而不是全局声明 堆栈的大小有限 因此只能保存有限数量的信息 如果程序试图在堆栈上放入太多信息 堆栈溢出将导致 当堆栈中的所有
  • 如何在reactjs中只允许文本框中出现数字?

    如何仅使用正则表达式在reactjs中仅允许文本框中的数字 基本思想是 Use 受控组件 https reactjs org docs forms html controlled components 使用输入字段的 value 和 onC
  • Angular 的 NO_ERRORS_SCHEMA 有问题吗?

    当测试具有子组件的组件时 您有几个选项 导入设置组件和子组件的模块 问题是您实例化真正的子组件及其依赖项 模拟子组件 这可能很乏味 具体取决于它有多少子组件 Use NO ERRORS SCHEMA并忽略子组件 鉴于大多数时候您只关心当前组
  • PHP 简单 HTML DOM 解析器添加脚本标签

    是否可以使用 PHP Simple HTML DOM 解析器在 simple html dom 对象的头部添加一个新的脚本标记 该对象具有主页的完整 html 我需要在该模板中添加一些节点 其中一个节点是带有 jquery 的脚本标记 另一
  • 如何使用硒按住非修饰键(空格键)?

    我遇到了一个问题 硒无法按住不在此列表中的键 Keys SHIFT Keys CONTROL Keys ALT Keys META Keys COMMAND Keys LEFT ALT Keys LEFT CONTROL Keys LEFT
  • 显式实现的接口和通用约束

    interface IBar void Hidden class Foo IBar public void Visible void IBar Hidden class Program static T CallHidden1
  • 如何在 Nestjs 上使用一个路由和多个 dto?

    目前我正在使用 NestJS 构建 Restful api 我有一个ValidationPipe问题 它仅适用于控制器方法 不适用于服务方法 我需要针对不同的情况做出选择DTO class UserCreateDTO StaffCreate