#nestjs #nestjs-swagger
#nestjs #nestjs-swagger
Вопрос:
Для сервера API у меня есть набор моделей, например
Recording <-> Artist
с отношением ManyToMany в TypeORM. Отношение должно быть определено в моделях обеих сторон.
На определенных маршрутах я показываю только запись, а на определенных маршрутах также записи с исполнителями, используя leftJoinAndSelect . Например, /api/artists и /api/artists_with_recording .
Однако сгенерированная документация всегда показывает записи в исполнителях.
Есть ли какой-нибудь простой способ изменить вывод swagger?
Я мог бы создавать разные объекты модели с разметкой swagger, но с большим количеством объектов в большем количестве контекстов, которые могут стать довольно запутанными.
Ответ №1:
После дополнительных поисков я нашел решение. Я могу использовать функцию OmitType из NestJS для создания простых специальных классов для документации.
https://docs.nestjs.com/openapi/mapped-types#omit
Итак, для маршрута / api / исполнителей я делаю
@Entity()
class Artist {
...
}
class ArtistWithoutRecording extends OmitType(Artist, ['recording'] as const)
В документации контроллера я включаю тип ArtistWithoutRecording .
@Get('artists')
@ApiOperation({
summary: 'Get all artists',
description: 'Some description'
})
@ApiOkResponse({ type: ArtistWithoutRecording })
async getArtists() {
return this.artistDao.findMany()
}