Nestjs 序列化(Serialization)

文档

在发送实际响应之前,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值