如何使用 nestjs/swagger 更改查询参数序列化?

alw*_*loo 4 node.js swagger typescript nestjs nestjs-swagger

最近我将nestjs/swagger项目中的包更新为^4.0.0. 以前 Swagger 将我的查询参数序列化如下:

/resources?parameter=1,2,3
Run Code Online (Sandbox Code Playgroud)

现在它看起来像这样:

/resources?parameter=1&parameter=2&parameter=3
Run Code Online (Sandbox Code Playgroud)

我的查询的 DTO 对象如下所示:

class QueryDTO {
  @ApiProperty({
    required: false,
    type: [Number],
  })
  @IsOptional()
  readonly parameter?: number[];
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变这种行为?

hua*_*tao 6

I am on nestjs/swagger 4.5.9

I made it work by define the DTO ( notice the format: 'form')

  @IsNotEmpty()
  @ApiProperty({
    type: [Number],
    format: 'form',
  })
  @IsArray()
  @Transform((value: string) => value.split(',').map(item => Number(item)))
  @IsNumber({}, {each: true})
  deviceId: Array<number>;
Run Code Online (Sandbox Code Playgroud)