当前位置: 首页 > 面试题库 >

如何将ValidationPipe()和ParseIntPipe()应用于参数?

长孙修远
2023-03-14
问题内容

我正在尝试在NestJs控制器中同时应用ValidationPipe()ParseIntPipe()参数。

目的是ParseIntPipe()仅适用于Body
DTO中的所有参数,@Param('id')ValidationPipe()所有参数均适用CreateDataParams

但是,我似乎无法按照我想要的方式来应用两个管道。这是我所拥有的:

@Post(':id')
@UsePipes(new ValidationPipe())
async create(
    @Param('id', new ParseIntPipe()) id: number,  //this doesn't work
    @Param() params: CreateDataParams,
    @Body() createDto: CreateDto
) {
    // params.id
}

我试图让另一个@Param('id')人使用该ParseIntPipe()变压器,但这不起作用。

我怎样才能同时应用ValidationPipe()和应用ParseIntPipe()参数?


问题答案:

如果应用ParseIntPipeidPARAM,它只会改变id,但没有财产idparams,在这里它会留一个string

相反,您可以使用class-transformer将参数转换为number

import { Transform } from 'class-transformer';
export class CreateDataParams {
  @Transform(id => parseInt(id), {toClassOnly: true})
  id: number;
}

然后将ValidationPipe搭配使用选项transform: true

@Post(':id')
@UsePipes(new ValidationPipe({transform: true}))
async create(
    @Param() params: CreateDataParams,
    @Body() createDto: CreateDto
) {
    // params.id
}

不过请注意,这是不安全的,因为eg parseInt('5abc010')5。因此,您可能需要对转换功能进行其他检查。



 类似资料:
  • 问题内容: 我有一个简单的页面,其中包含一些iframe部分(以显示RSS链接)。如何将相同的CSS格式从首页应用到iframe中显示的页面? 问题答案: 编辑:除非设置了适当的CORS标头,否则这不能跨域工作。 这里有两件事:iframe块的样式和嵌入在iframe中的页面的样式。您可以按通常方式设置iframe块的样式: 必须通过将iframe中嵌入的页面样式包含在子页面中来进行设置: 或者可

  • 我有大约30个网页,都是超文本标记语言表单。每个页面都有两个或更多不同的表单元素——选择、输入文本、复选框、文本区域——以及各种用户界面元素、弹出窗口、表单验证等。我正在尝试重构页面中使用的jQuery以使用DRY原理,但不确定如何做到这一点。这里有一些使用的jQuery示例: 示例代码块A: 示例代码块B: 示例代码块C: 所有这些都包含在文件中。准备好的上面的实际代码列表没有那么重要。我试图让

  • 问题内容: 在将其标记为重复之前,让我向您解释,我已经阅读了此页面以及许多其他内容,但仍然没有找到解决问题的方法。 这就是我遇到的问题:给定两个2D数组,我想在两个数组上应用函数F。F将两个一维数组作为输入。 请注意,这仅用于演示。这里真正的问题是在两组一维数组上工作的泛型函数F。 向量化要么完全失败,要么出错,或者应用逐个元素的功能,而不是逐个数组(或逐行) 迭代地应用功能;例如,使用上面所定义

  • 问题内容: 我无法获得CSS生成的内容可用于元素: 有没有人有一个解决方案 实际 工作?提前致谢。 问题答案: 您可以使用jQuery的函数来访问它。 例 这是一个示例,向我展示了如何将css应用于通常在屏幕左上方找到的jQuery徽标。请注意,它必须是相同的域/端口等,因此这就是我的示例在iframe中使用jsfiddle的原因。

  • 问题内容: 在Python中的lambda函数上使用装饰器有什么语法?例: 结果如下: 但是,当我尝试使用lambda进行相同操作时: 我得到这个: 我觉得这可能是通过允许将语句“插入” lambda使其更通用的好方法。但是,如果存在这样的功能,我不知道语法是什么。 问题答案:

  • 也就是说,我想要达到的目标可以从以下的角度来看 如何使用管道实现?