【发布时间】:2019-05-10 18:59:53
【问题描述】:
当前行为
当我尝试为请求正文初始化验证管道时,如果给出无效类型,则不会发生任何事情。
预期行为
当用户指定的值与我的 DTO 中的类型不符时,我会因错误而拒绝。在这种情况下,我请求 /test 的正文为
{ "string": true }
我希望这会出错,但事实并非如此。
问题的最小再现
import { IsString } from "class-validator";
export class TestDTO {
@IsString() public readonly string: string;
}
@Controller()
export class TestController {
@Post("/test")
public testing(@Body(new ValidationPipe()) test: TestDTO): string {
return test.string;
}
}
【问题讨论】:
-
你的代码对我有用,在
{"string": true}上抛出 404。return test.string在你的情况下实际上返回一个布尔值吗?否则,请尝试重新安装您的node_modules并使用npm update更新您的依赖项。 -
是的 @KimKern 它返回一个布尔值。我会尝试重新安装节点模块。如果这与它有关,我正在使用 fastify 适配器。而且,为什么它会抛出 404?不应该抛出 400 (BAD_REQUEST) 吗?
-
是的,它是 400。对不起 ;)
-
是的。重新安装节点模块,结果相同。请问:你用的是express还是fastify适配器?
-
我用 express 试过了
标签: javascript node.js typescript nestjs class-validator