我有 UpdateUserDto:
export class UpdateUserDto extends PartialType(CreateUserDto) {
}
Run Code Online (Sandbox Code Playgroud)
创建用户Dto:
export class CreateUserDto {
@ValidateNested({ each: true })
@IsOptional()
Point: CreateUserPointDto;
}
Run Code Online (Sandbox Code Playgroud)
创建用户点Dto:
export class CreateUserPointDto{
@IsString()
name: string
@IsString()
color: string
}
Run Code Online (Sandbox Code Playgroud)
现在部分类型使 CreateUserDto 的所有属性都是可选的,问题是,它不会创建 CreateUserDto 内的 Point 的所有属性可选。
我该如何解决这个问题?
还有另一个不相关的问题,对 UpdateUser 中的 Point 的任何验证仅适用于{ PartialType } from '@nestjs/mapped-types'
如果我使用import { PartialType } from '@nestjs/swagger',对于相同的代码,它表示 Point.property 名称/颜色不应该存在。
我确信您可能已经不再这样做了,但是如果您将来遇到这种情况,这里有一些可以解决问题的方法。
您需要使用@Type来自class-transformers来确保获得嵌套Point属性的类型。
import { Type } from 'class-transformer';
export class CreateUserDto {
@ValidateNested({ each: true })
@IsOptional()
@Type(() => CreateUserPointDto) // -> this line
Point: CreateUserPointDto;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5192 次 |
| 最近记录: |