gpt4 book ai didi

typescript - 在 TypeScript 和 NestS 中将类转换为类/对象(实体到 DTO)

转载 作者:行者123 更新时间:2023-12-03 13:31:39 28 4
gpt4 key购买 nike

如何转换数据库实体User :

class User {
public firstName: string;
public lastName: string;
public phone?: string;
public email: string;
public status: EUserState;
public tokens: Token[];
public password: string;
}


进入DTO实体 GetUserDTO :
class GetUserDTO {
public id: number;
public firstName: string;
public lastName: string;
public phone?: string;
public email: string;
}

在 typescript 中?我正在使用 @nestjs , class-validatorclass-transformer包,但我没有找到任何方法来使用它们来实现这一点。

有人可能会说,拥有 DTO 对此毫无意义,但我们在服务器和客户端之间共享 DTO 以维护 API 结构。

有任何想法吗?

最佳答案

有几种方法可以实现您想要的

  • 您可以从 Domain 手动映射型号到 DTOs使用 static来自 Domain 的函数或 DTO

  • export class Domain {
    ...
    static toDTO(domain: Domain) {
    // mapping goes here
    }
    }

    或者

    export class Dto {
    ...
    static fromDomain(domain: Domain) {
    // mapping goes here
    }
    }
  • 您可以使用第三方库:automapper-ts , @wufe/mapper , @nartc/automapper (我的库),或 morphism
  • class-transformer也可以被认为是一个映射器,但是,如果你想从一个模型映射到另一个模型,那么 class-transformer真的不能那样做。

    关于typescript - 在 TypeScript 和 NestS 中将类转换为类/对象(实体到 DTO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60139683/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com