Вложенный массив объектов — item.toJSON не является функцией

#angular #typescript #api #swagger #nswag

#angular #typescript #API #развязность #nswag

Вопрос:

При использовании NSwag с моим проектом angular при попытке отправить данные выдает ошибку, если объект имеет вложенный массив объектов, как здесь:

 export interface IJobAdDto {
    mainJobAd: JobAddDetailsDto;
    differentLanguageJobAds: JobAddDetailsDto[] | undefined;}
 

введите описание изображения здесь

Но если я вместо этого «приведу его» к новому объекту того типа, которым он уже должен быть, это сработает:
введите описание изображения здесь

Вопрос в том, как мне заставить NSwag внести это изменение или как я могу расширить этот метод / класс, чтобы он не перезаписывал его при каждом его создании?

Я сгенерировал клиентский код с помощью NSwag(13.9.4.0).

Ошибка: введите описание изображения здесь

Ответ №1:

Один из способов сделать это — отделить DTO от клиента, чтобы он не перезаписывался каждый раз.

Поместите DTO в класс обслуживания, который определяется NSwag: введите описание изображения здесь

А затем «Исключите имена типов» (dto), которые вы не хотите, чтобы NSwag генерировал: введите описание изображения здесь

и тогда любые изменения, которые вам нужно внести, могут быть внесены туда. Недостатком этого является то, что при изменении модели вам нужно не забыть обновить файл расширения.