NestJS:设置@Body()的类型

时间:2019-05-16 10:44:10

标签: javascript typescript express nestjs

给出以下内容:

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

默认情况下,@Bod() petDetails的类型不是声明的PostPetDto类型,而是普通/任意。将Nest封送至该类型的NestJS惯用方式是什么?

该类型包含应运行的方法(例如,验证)。

2 个答案:

答案 0 :(得分:2)

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 :(得分:1)

ValidationPipe不会自动将有效载荷转换为相应的DTO类。要启用此功能:

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