А что вам мешает написать
ProductDTO[]
вместо создания отдельного DTO? Это тоже будет работать, а ещё лучше врубите
transform: true
в конфигурации валидации в вашем приложении, чтобы наверняка, так сказать.
Если у вас в приложении не включена валидация, то советую сделать это глобально в файле
app.ts
Читать только если вы новичёк в NestВы же не пишете отдельные ValidationPipe
для каждого Create
эндпоинта?
app.useGlobalPipes(new ValidationPipe({ transform: true }));
Потом легко вытаскиваем это в контроллере
@Body() productsDto: ProductDto[]