NestJS: установить тип @Body () - PullRequest
0 голосов
/ 16 мая 2019

С учетом следующего:

@Post()
public async createPet(@Body() petDetails: PostPetDto): Promise<any> {
}

По умолчанию тип @Bod() petDetails является не объявленным типом PostPetDto, а обычным / любым.Что такое идиоматический способ NestJS сделать его маршалированным до типа?

Тип содержит методы (например, validate), которые должны быть запущены.

Ответы [ 2 ]

2 голосов
/ 16 мая 2019
import { ValidationPipe } from '@nestjs/common';

@Post()
@UsePipes(ValidationPipe)
public async createPet(@Body() petDetails: PostPetDto): Promise<any> {
}

или для установки в глобальном масштабе

async function bootstrap() {
  const app = await NestFactory.create(ApplicationModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

смотри https://docs.nestjs.com/pipes

1 голос
/ 16 мая 2019

ValidationPipe не преобразует автоматически ваши полезные данные в соответствующие классы DTO. Чтобы включить это:

app.useGlobalPipes(
  new ValidationPipe({
    transform: true,
  }),
);
...