如何在NestJS中使用类转换器序列化和排除特定字段?

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

我正在使用 NestJS 开发一个 API,并且有一个端点返回用户列表以及一些分页信息。这是我的控制器的相关部分:

@HttpCode(HttpStatus.OK)
@Get()
async getAllUsers(@Query() userQuery: UserQueryDto) {
  const users = await this.userService.findAllByFilter(userQuery);
  return users;
}

响应的结构如下,在 UsersResponse 中定义:

class UsersResponse {
  data: Users[];
  pagination: Pagination
}

class Pagination {
  total: number;
  page: number;
  limit: number;
  totalPages: number;
}

class Users {
  id: string;
  hash: string;
  email: string;
  firstName: string;
  lastName: string;
}

我想使用类转换器序列化用户数据,并在返回响应时排除哈希字段。如何在 NestJS 框架内以最有效的方式实现这一目标?类转换器中是否有装饰器或特定方法允许有选择地从序列化对象中排除字段?

javascript node.js typescript nestjs class-transformer
1个回答
0
投票

您可以使用

@Exclude
装饰器。

import { Exclude } from 'class-transformer';

export class UserEntity {
  id: number;
  firstName: string;
  lastName: string;

  @Exclude()
  password: string;

  constructor(partial: Partial<UserEntity>) {
    Object.assign(this, partial);
  }
}

参考

© www.soinside.com 2019 - 2024. All rights reserved.