我是NestJS的新手,我正在尝试从查询参数填充过滤器DTO。
这是我所拥有的:
查询:
localhost:3000 / api / checklists?stations = 114630,114666,114667,114668
控制器
@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[];
// ...
}
有了这个,类验证器不会抱怨,但是,在过滤器对象站中实际上不是数组,而是单个字符串。
我想将其转换为验证管道内的数组。我该如何实现?
答案 0 :(得分:1)
您可以传递ValidationPipe
的实例而不是类,这样做时,可以传递诸如transform: true
之类的选项,它们将使class-validator
和 class-transformer
运行,它将回传转换后的值。
@Get()
public async getChecklists(@Query(new ValidationPipe({ transform: true })) filter: ChecklistFilter): Promise<ChecklistDto[]> {
// ...
}