首页 > 解决方案 > Nestjs - 可以获得正确实例化的正文有效负载吗?

问题描述

Nestjs 文档建议对 DTO 使用类而不是接口,因为they are preserved as real entities in the compiled JavaScript但实际上负载类没有正确实例化(使用 new()),它们是与类具有相同形状的对象。下面的例子不起作用。有没有办法CatDto在示例中获得正确实例化的运行时类?

class CatsDto {
  constructor(private name: string) {}
  public greet() {
    return `${this.name} say miaouw`;
  }
}

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Post()
  getGreeting(@Body() cat: CatsDto): string {
    return cat.greet();
  }
}

标签: nestjsdto

解决方案


您需要使用 ClassTransformer 管道来转换作为控制器操作的参数传递的对象:https ://docs.nestjs.com/techniques/validation#transform-payload-objects


推荐阅读