首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使扩展部分类型( createDto )在createDto中嵌套dtos属性也是可选的

如何使扩展部分类型( createDto )在createDto中嵌套dtos属性也是可选的
EN

Stack Overflow用户
提问于 2021-05-25 21:20:05
回答 1查看 2K关注 0票数 9

我有UpdateUserDto:

代码语言:javascript
复制
export class UpdateUserDto extends PartialType(CreateUserDto) {

}

CreateUserDto:

代码语言:javascript
复制
export class CreateUserDto {
  @ValidateNested({ each: true })
  @IsOptional()
  Point: CreateUserPointDto;
}

CreateUserPointDto:

代码语言:javascript
复制
 export class CreateUserPointDto{
  @IsString()
  name: string
  @IsString()
  color: string
  
}

现在,分部类型使CreateUserDto的所有属性都是可选的,问题是,它没有创建CreateUserDto可选内部的Point的所有属性。

我该如何解决这个问题?

另外一个不相关的问题是,在UpdateUser中对Point的任何验证都只适用于{ PartialType } from '@nestjs/mapped-types'

如果我使用import { PartialType } from '@nestjs/swagger',对于相同的代码,它会说Point.property名称/颜色不应该存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-29 05:01:11

我相信你可能已经从这个开始,但这里有一些东西,可能解决问题,以防你在未来出现。

您需要使用来自class-transformersclass-transformers来确保获得嵌套Point属性的类型。

样本代码

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

export class CreateUserDto {
  @ValidateNested({ each: true })
  @IsOptional()

  @Type(() => CreateUserPointDto) // -> this line
  Point: CreateUserPointDto;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67695710

复制
相关文章

相似问题

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