Nest.js swagger模块-dto中的对象在swagger中不可见

时间:2018-10-28 15:13:18

标签: swagger nestjs

我正在用swagger在嵌套js中实现小型应用程序,我有一列(postgresql)作为json对象(typeorm中的简单json类型),并且嵌套对象在swagger中不可见。我的代码:

@ApiModelProperty()
@IsOptional()
  readonly foo: {
  boo: string[];
  boo2: string;
  boo3: string;
  ..etc
 };

在swagger中,我只有foo在空对象中可见,使用swagger nest js模块可以使整个json对象可见吗?

提前

thx 卡罗尔

3 个答案:

答案 0 :(得分:0)

使用显式类型

export interface Foo {
  boo: string[];
  boo2: string;
  boo3: string;
  ..etc
}

@ApiModelPropertyOptional({ type: Foo })
@IsOptional()
readonly foo: Foo;

答案 1 :(得分:0)

请勿创建/使用界面的创建subDto(如果需要,请使用导出,不使用),例如:

export class SubDto {
    @ApiModelProperty({ type: String })
    @IsString()
    readonly subStringOne: string;

    @ApiModelProperty({ type: String })
    @IsString()
    readonly subStrinTwo: string;
}

export class MainDto {

    @ApiModelProperty({ type: String })
    @IsString()
    readonly mainStringOne: string;

    @ApiModelProperty({ type: [SubDto] })
    @IsArray()
    readonly mainArray: SubDto[];

    // or do the same thing for objects
    @ApiModelProperty({ type: SubDto })
    @IsJSON() // @IsOject doesn't exist in Nestjs so I use @IsJSON().
    readonly mainObject: SubDto;
}

答案 2 :(得分:0)

我相信您使用的是Nestjs的较旧版本,因为@ApiModelProperty现在称为@ApiProperty。 我建议您将nestjs升级到最新版本,并按照以下步骤操作,对我来说效果很好:

https://docs.nestjs.com/recipes/swagger#openapi-swagger

希望有帮助。