【问题标题】:NestJS: Set type of @Body()NestJS:设置@Body()的类型
【发布时间】:2019-10-03 14:57:39
【问题描述】:

鉴于以下情况:

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

默认情况下@Bod() petDetails 的类型不是PostPetDto 的声明类型,而是plain/any。将它编组为类型的 NestJS 惯用方式是什么?

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

【问题讨论】:

    标签: javascript typescript express nestjs


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

      ValidationPipe 不会自动将您的负载转换为相应的 DTO 类。开启此功能:

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

      【讨论】:

        猜你喜欢
        • 2021-10-22
        • 2013-04-04
        • 2021-06-01
        • 1970-01-01
        • 2020-08-02
        • 1970-01-01
        • 1970-01-01
        • 2020-05-27
        • 2020-02-05
        相关资源
        最近更新 更多