为什么我无法将响应映射到我的响应 DTO?

问题描述 投票:0回答:1

我尝试使用类转换器中的 plainToInstance 函数,但是当我尝试将字段从静止映射到我的 DTO 时,它可以映射,但在我的 DTO 中不正确,我有一些想要响应的字段,但映射完成后它返回所有字段

async createContainer(@Query('name') name:string): Promise<CreateContainerDto>  {
    console.log(name);
    
    try{
        const res = await this.imageService.createContainer(name)
        const dto = plainToInstance(CreateContainerDto,res)
        console.log(res);
        console.log(dto);
        return dto
    }

这是我的服务尝试将响应映射到 DTO

import { IsDate, IsString } from "class-validator"

export class CreateContainerDto{
    @IsString()
    etag: string
    @IsString()
    requestId: string
    @IsDate()
    date: Date

}

我想向用户响应某些字段

typescript nestjs mapping dto class-transformer
1个回答
0
投票

plainToInstance
函数已弃用,请使用
plainToClass
代替,如下所示:

        const dto = plainToClass(
           CreateContainerDto,
           res,
           { excludeExtraneousValues: true }
         )

并在你的d中暴露你想要展示的道具。

import { IsDate, IsString, Expose } from "class-validator"

export class CreateContainerDto{
    @Expose()
    @IsString()
    etag: string

    @Expose()
    @IsString()
    requestId: string

    @Expose()
    @IsDate()
    date: Date
}
© www.soinside.com 2019 - 2024. All rights reserved.