NestJS обнаружена циклическая зависимость (ключ свойства: «results») при использовании generic класса
Вопрос по NestJs. Делал все по примеру документации, но постоянно нарываюсь на одну и туже ошибку.
(node:22676) UnhandledPromiseRejectionWarning: Error: A circular dependency has been detected (property key: "results"). Please, make sure that each side of a bidirectional relationships are using lazy resolvers ("type: () => Cl assType")
Возможно ли решить эту проблему не создавая однотипные классы?
import { ApiOkResponse, getSchemaPath } from '@nestjs/swagger';
import { applyDecorators, Type } from '@nestjs/common';
import { PaginatedDto } from '../common/dto/paginated.dto';
export const ApiPaginatedResponse = <TModel extends Type>(model: TModel) => {
return applyDecorators(
ApiOkResponse({
schema: {
title: `PaginatedResponseOf${model.name}`,
allOf: [
{ $ref: getSchemaPath(PaginatedDto) },
{
properties: {
results: {
type: 'array',
items: { $ref: getSchemaPath(model) },
},
},
},
],
},
}),
);
};
export class PaginatedDto<T> {
total: number;
limit: number;
offset: number;
results: T[];
}
export class NewsDto {
group: {
id: number;
title: string;
};
news: {
id: number;
date: Date;
title: string;
};
}
@Controller('news')
@ApiTags('news')
export class NewsController {
constructor(private readonly newsService: NewsService) {}
@Get()
@ApiPaginatedResponse(NewsDto)
findAll(
@Query() paginationQuery: PaginationQuery,
): Promise<PaginatedDto<NewsDto>> {
return this.newsService.findAll(paginationQuery);
}
}
Это работает если делать не через дженерник, но тогда приходится добавлять множество однотипных классов с отличием типа свойства results
export class PaginatedDto {
total: number;
limit: number;
offset: number;
results: NewsDto[];
}