给定以下情况:
@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,
}),
);