gpt4 book ai didi

NestJS:如何在@Query 对象中转换数组

转载 作者:行者123 更新时间:2023-12-03 14:38:34 27 4
gpt4 key购买 nike

我是 NestJS 的新手,我正在尝试从查询参数中填充过滤器 DTO。

这是我所拥有的:

询问:

本地主机:3000/api/checklists?stations=114630,114666,114667,114668

Controller

@Get()
public async getChecklists(@Query(ValidationPipe) filter: ChecklistFilter): Promise<ChecklistDto[]> {
// ...
}

DTO
export class ChecklistFilter {

@IsOptional()
@IsArray()
@IsString({ each: true })
@Type(() => String)
@Transform((value: string) => value.split(','))
stations?: string[];

// ...
}

有了这个,类验证器不会提示,然而,在过滤器对象中,站实际上不是一个数组,而是一个单一的字符串。

我想将其转换为验证管道中的数组。我怎样才能做到这一点?

最佳答案

您可以传递 ValidationPipe 的实例而不是类,这样做时您可以传入诸如 transform: true 之类的选项这将使 class-validator class-transformer运行,它应该传递回转换后的值。

@Get()
public async getChecklists(@Query(new ValidationPipe({ transform: true })) filter: ChecklistFilter): Promise<ChecklistDto[]> {
// ...
}

关于NestJS:如何在@Query 对象中转换数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59289699/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com