nestjs - 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();
}
}
解决方案
您需要使用 ClassTransformer 管道来转换作为控制器操作的参数传递的对象:https ://docs.nestjs.com/techniques/validation#transform-payload-objects