add serialize

This commit is contained in:
2025-05-20 09:52:51 +08:00
parent 0b98e1c899
commit e2f1180a14
3 changed files with 58 additions and 1 deletions
@@ -0,0 +1,35 @@
import {
ClassSerializerContextOptions,
ClassSerializerInterceptor,
PlainLiteralObject,
StreamableFile,
} from '@nestjs/common';
import { isArray, isNil, isObject } from 'lodash';
export class AppInterceptor extends ClassSerializerInterceptor {
serialize(
response: PlainLiteralObject | Array<PlainLiteralObject>,
options: ClassSerializerContextOptions,
): PlainLiteralObject | Array<PlainLiteralObject> {
if ((!isObject(response) && !isArray(response)) || response instanceof StreamableFile) {
return response;
}
if (isArray(response)) {
return (response as PlainLiteralObject[]).map((item) => {
return !isObject(item) ? item : this.transformToPlain(item, options);
});
}
if ('meta' in response && 'items' in response) {
const items = !isNil(response.items) && isArray(response.items) ? response.items : [];
return {
...response,
items: (items as PlainLiteralObject[]).map((item) => {
return isObject(item) ? this.transformToPlain(item, options) : item;
}),
};
}
return super.transformToPlain(response, options);
}
}