给出以下内容:
@Post()
public async createPet(@Body() petDetails: PostPetDto): Promise<any> {
}
默认情况下,@Bod() petDetails
的类型不是声明的PostPetDto
类型,而是普通/任意。将Nest封送至该类型的NestJS惯用方式是什么?
该类型包含应运行的方法(例如,验证)。
答案 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();
答案 1 :(得分:1)
ValidationPipe不会自动将有效载荷转换为相应的DTO类。要启用此功能:
app.useGlobalPipes(
new ValidationPipe({
transform: true,
}),
);