首页 > 解决方案 > 如何从控制器 JSON 返回的实体字段中排除。NestJS + Typeorm

问题描述

我想从返回的 JSON 中排除密码字段。我正在使用 NestJS 和 Typeorm。

在这个问题上提供的解决方案对我或 NestJS 都不起作用。如果需要,我可以发布我的代码。还有其他想法或解决方案吗?谢谢。

标签: node.jstypescriptnestjstypeorm

解决方案


我建议创建一个利用类转换器库的拦截器:

@Injectable()
export class TransformInterceptor implements NestInterceptor {
  intercept(
    context: ExecutionContext,
    call$: Observable<any>,
  ): Observable<any> {
    return call$.pipe(map(data => classToPlain(data)));
  }
}

然后,只需使用@Exclude()装饰器排除属性,例如:

import { Exclude } from 'class-transformer';

export class User {
    id: number;
    email: string;

    @Exclude()
    password: string;
}

推荐阅读