Nestjs:设置@Body()的类型



给定以下情况:

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

默认情况下,@Bod() petDetails的类型不是PostPetDto的声明类型,而是普通/任何类型。Nestjs的惯用方式是什么?

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

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

验证pipe不会自动将有效负载转换为相应的DTO类。要打开它:

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

最新更新