From fe94150b2bf4188e5757d4838b18579c4750d228 Mon Sep 17 00:00:00 2001 From: xidongdong-153 Date: Thu, 23 Nov 2023 13:50:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=8B=A6=E6=88=AA=E5=99=A8=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=AD=98=E6=94=BE=E9=94=99=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/core/providers/app.interceptor.ts | 40 ++++++++++++++++++ src/modules/core/providers/index.ts | 41 +------------------ 2 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/modules/core/providers/app.interceptor.ts b/src/modules/core/providers/app.interceptor.ts index e69de29..201f443 100644 --- a/src/modules/core/providers/app.interceptor.ts +++ b/src/modules/core/providers/app.interceptor.ts @@ -0,0 +1,40 @@ +import { + ClassSerializerContextOptions, + ClassSerializerInterceptor, + PlainLiteralObject, + StreamableFile, +} from '@nestjs/common'; +import { PinoLoggerOptions } from 'fastify/types/logger'; +import { isArray, isNil, isObject } from 'lodash'; + +export class AppIntercepter extends ClassSerializerInterceptor { + serialize( + response: PlainLiteralObject | PlainLiteralObject[], + options: ClassSerializerContextOptions, + ): PlainLiteralObject | PlainLiteralObject[] { + if ((!isObject(response) && !isArray(response)) || response instanceof StreamableFile) { + return response; + } + + // 数组处理 - 如果是数组则对数组每一项元素序列化 + if (isArray(response)) { + return (response as PlainLiteralObject[]).map((item) => + !isObject(item) ? item : this.transformToPlain(item, options), + ); + } + + // 分页处理 - 对items中的每一项进行序列化 + if ('meta' in response && 'items' in response) { + const items = !isNil(response.items) && isArray(response.items) ? response.items : []; + + return { + ...response, + items: (items as PinoLoggerOptions[]).map((item) => + !isObject(item) ? item : this.transformToPlain(item, options), + ), + }; + } + + return this.transformToPlain(response, options); + } +} diff --git a/src/modules/core/providers/index.ts b/src/modules/core/providers/index.ts index 201f443..4110158 100644 --- a/src/modules/core/providers/index.ts +++ b/src/modules/core/providers/index.ts @@ -1,40 +1 @@ -import { - ClassSerializerContextOptions, - ClassSerializerInterceptor, - PlainLiteralObject, - StreamableFile, -} from '@nestjs/common'; -import { PinoLoggerOptions } from 'fastify/types/logger'; -import { isArray, isNil, isObject } from 'lodash'; - -export class AppIntercepter extends ClassSerializerInterceptor { - serialize( - response: PlainLiteralObject | PlainLiteralObject[], - options: ClassSerializerContextOptions, - ): PlainLiteralObject | PlainLiteralObject[] { - if ((!isObject(response) && !isArray(response)) || response instanceof StreamableFile) { - return response; - } - - // 数组处理 - 如果是数组则对数组每一项元素序列化 - if (isArray(response)) { - return (response as PlainLiteralObject[]).map((item) => - !isObject(item) ? item : this.transformToPlain(item, options), - ); - } - - // 分页处理 - 对items中的每一项进行序列化 - if ('meta' in response && 'items' in response) { - const items = !isNil(response.items) && isArray(response.items) ? response.items : []; - - return { - ...response, - items: (items as PinoLoggerOptions[]).map((item) => - !isObject(item) ? item : this.transformToPlain(item, options), - ), - }; - } - - return this.transformToPlain(response, options); - } -} +export * from './app.interceptor';