Nestjs 序列化(Serialization)

本文介绍如何利用Class-Transformer库在Node.js应用中处理敏感数据,通过装饰器@Exclude()来排除不应公开的数据,如用户密码,并使用@Expose()来安全地暴露计算属性。文章还展示了如何在控制器中应用ClassSerializerInterceptor来确保返回的数据只包含允许公开的部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文档

在发送实际响应之前,Serializers为数据操作提供了干净的抽象层。例如,应始终从最终响应中排除敏感数据(如用户密码)
λ yarn add class-transformer

cats.entity.ts

import { PrimaryGeneratedColumn, Column, Entity } from 'typeorm';
import { Exclude, Expose } from 'class-transformer';

@Entity()
export class Cats {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 45 })
  name: string;

  @Exclude()  // 排除掉该字段
  @Column('int')
  age: number;

  @Expose()
  get hello(): string {
    return `hello ${this.name}.`; // 暴露出一个计算属性
  }

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

在控制器返回时做处理

   import { Cats } from './cats.entity';

  @UseInterceptors(ClassSerializerInterceptor)  #
  @Get('cats')
  async findAll(): Promise<Cats[]> {
    // [{id, name, age}] => [{id, name}]
    return (await this.catsService.find()).map(el => new Cats(el)) # 
  }

转载于:https://www.cnblogs.com/ajanuw/p/9853394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值