NestJS объединяет 2 DTO или лучшие практики

#node.js #nestjs #dto #nestjs-swagger

#node.js #nestjs #dto #nestjs-развязность

Вопрос:

У меня есть один общий Dto для разбивки на страницы. Но в то время как некоторым API требуется больше параметров и разбивки на страницы. например, поиск, фильтр и т.д. Итак, мой метод стал бы таким, как показано ниже :

  getAllCelebrities(
        @AuthUser('_id') userId: string,
        @Body() paginationnewDto: PaginationnewDto,
        @Body() getCelebritiesDto: GetCelebritiesDto,
    ) 
  

Наличие 2 параметров тела генерирует 2 блока в swagger. Как показано ниже:
введите описание изображения здесь

Также, когда я консолирую оба параметра, он возвращает один и тот же объект.

Какова наилучшая практика для этого, чтобы мне не нужно было указывать параметры разбивки на страницы в моем getCelebritiesDto ? И я могу быть сухим.

Комментарии:

1. Я думаю, вы можете использовать простое наследование, почему бы и нет?

2. @MorKadosh Я имею это в виду в качестве последнего варианта, я просто смотрю, есть ли какая-либо другая лучшая практика.

3. ДА. Я знаю это чувство, когда вы думаете, что решение слишком очевидно. С другой стороны, мы говорим о простых классах, не более того. Так что, возможно, очевидное решение является лучшим

Ответ №1:

Отвечая на мой собственный вопрос, поскольку я не нашел никакой другой альтернативы. Согласно моей мысли и предложению @MorKadosh, вот простое решение. Я расширил PaginationnewDto в GetCelebritiesDto

 export class GetCelebritiesDto extends PaginationnewDto {}
  

Комментарии:

1. То же самое произошло и со мной. Я искал стандартный способ сделать это гнездо. Найден IntersectionType, но для этого нужно создать дополнительный класс, поэтому теперь используем простое наследование 🙂