【问题标题】:Mapping Entity-to-DTO (and vice-versa) in Nest.js在 Nest.js 中将实体映射到 DTO(反之亦然)
【发布时间】:2022-06-11 00:22:46
【问题描述】:

我正在使用 Nest.js 构建 API,并且一直在使用映射器将 TypeORM 实体转换为 DTO(反之亦然)。

到目前为止,我一直在手动执行此操作:

 public static async entityToDto(entity: UserEntity): Promise<UserDto> {
    const dto = new UserDto();

    dto.id = entity.id;
    dto.emailAddress = entity.emailAddress;
    dto.firstName = entity.firstName;
    dto.lastName = entity.lastName;
    dto.addressLine1 = entity.addressLine1;
    dto.addressLine2 = entity.addressLine2;
    dto.townCity = entity.townCity;
 
    [...]

    return dto;
  }

在我看来,这是一个不错的(虽然不灵活)的方法。它明确控制将哪些字段返回给用户,从而最大限度地减少泄漏敏感字段(如密码哈希)的机会。但是,我的印象是 DTO 的目的是有一个地方来修改有关某事的数据。如果我需要添加一个字段,我必须修改 both DTO 映射器。

每个实体都有一个映射器似乎是惯例。但是,如果我不想返回,例如,accountStatus 字段,我将不得不编写一个新的映射器。所以我现在有多个映射器需要修改。

我的想法是编写一个“通用”映射器,它查看 DTO 中的字段,并将它们映射到实体中的字段。

我对 TypeScript 和 Nest.js 比较陌生,所以我想知道其他人是如何管理这个的。

【问题讨论】:

标签: nestjs dto


【解决方案1】:

使用类转换器 npm 包

【讨论】:

    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2017-11-17
    相关资源
    最近更新 更多