如何在 NestJS 中配置实体映射以自动过滤掉响应中的空字段?
时间: 2024-10-29 19:09:19 浏览: 31
在 NestJS 中,你可以通过使用 `@nestjs/swagger` 模块来配置实体映射,并利用其提供的 `@ApiProperty()` 或 `@ApiModelProperty()` 装饰器来控制 Swagger 文档中哪些属性显示在 API 返回结果中。如果你想自动过滤掉响应中的空字段,可以这样做:
1. 首先,在你的实体类上装饰 `@ApiProperty()` 或 `@ApiModelProperty()` 并添加 `required: false` 或者 `nullable: true` 参数,这样Swagger会默认认为这个字段是可以为空的。
```typescript
// 示例用户实体 User.ts
import { ApiProperty, Type, IsOptional } from '@nestjs/swagger';
export class User {
@ApiProperty({ required: false }) // 或者 @ApiModelProperty({ nullable: true })
name?: string;
@ApiProperty({ required: false }) // 或者 @ApiModelProperty({ nullable: true })
email: string;
}
```
2. 如果你想要在整个项目中统一设置,可以在全局模块(如 `@Module` 注解的类)上使用 `@nestjs/swagger` 的装饰器,并配置全局的选项。
```typescript
import { APP_METADATA_KEY, SwaggerModule, SWAGGER_OPTIONS } from '@nestjs/swagger';
@Module({
imports: [
SwaggerModule.forRoot({
customTitle: 'My App API',
includeEmptyResponseProperties: false, // 这将默认不包括空值属性
...otherSwaggerOptions,
}),
],
})
export class AppModule {}
```
在这个例子中,`includeEmptyResponseProperties: false` 将阻止包含响应中所有空的字段。
阅读全文