首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在nestjs中添加嵌套的dto?

如何在nestjs中添加嵌套的dto?
EN

Stack Overflow用户
提问于 2022-10-29 18:43:05
回答 3查看 58关注 0票数 0

我正在尝试创建一个具有另一个DTO作为数组的DTO,但是在发送body时,nestjs/swagger没有检测到body内容。我的DTO是:

代码语言:javascript
运行
复制
export class CreatePageDto {
  @ApiHideProperty()
  createAt: Date;

  @ApiHideProperty()
  updateAt: Date;

  @ApiProperty({
    type: CreatePageTranslateDto,
    isArray: true,
  })
  translations: CreatePageTranslateDto[];
}


export class CreatePageTranslateDto {
  @ApiProperty()
  slug: string;

  @ApiProperty()
  title: string;

  @ApiProperty({
    enum: AvailableLanguages,
  })
  lang: AvailableLanguages;
}

当一个人发表这样的文章时:

代码语言:javascript
运行
复制
curl --location --request POST 'http://localhost:3000/pages' \
--header 'Content-Type: application/json' \
--data-raw '{
  "translations": [
    {
      "slug": "nombre-de-ejemplo",
      "title": "Nombre de ejemplo",
      "lang": "es"
    }
  ]
}'

我得到了一个空虚的身体。

EN

回答 3

Stack Overflow用户

发布于 2022-10-30 19:26:16

问题是类验证器。我决定在全球范围内设置类验证器,但我做得不对。问题是由于白名单属性设置为true:“如果设置为true,验证器将从没有任何装饰器的任何属性中删除已验证的对象”。

票数 0
EN

Stack Overflow用户

发布于 2022-10-31 13:47:24

您必须先切换类位置,然后请将这个装饰器@ApiExtraModels()添加到类CreatePageTranslateDto之上。

所以,代码会是这样的:

代码语言:javascript
运行
复制
@ApiExtraModels() <-----
export class CreatePageTranslateDto {
  @ApiProperty()
  slug: string;

  @ApiProperty()
  title: string;

  @ApiProperty({
    enum: AvailableLanguages,
  })
  lang: AvailableLanguages;
}

export class CreatePageDto {
  @ApiHideProperty()
  createAt: Date;

  @ApiHideProperty()
  updateAt: Date;

  @ApiProperty({
    type: CreatePageTranslateDto,
    isArray: true,
  })
  translations: CreatePageTranslateDto[];
}
票数 0
EN

Stack Overflow用户

发布于 2022-11-14 09:33:09

为了验证嵌套的DTO,您必须在下面这样做。

代码语言:javascript
运行
复制
 import { Type } from 'class-transformer';
 import { ValidateNested } from 'class-validator';

  @ApiProperty({
    type: CreatePageTranslateDto,
    isArray: true,
  })  
  @ValidateNested({ each: true })
  @Type(() => CreatePageTranslateDto)
  translations: CreatePageTranslateDto[];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74247890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档