Nestjs 序列化(Serialization)

时间:2023-03-08 20:29:55

文档

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