@Transform() Boolean Cast 不适用于 DTO

@Transform() Boolean Cast Doesn't Work on DTO

我在 DTO 中使用 nestJS 和 class-transformer。

这是我所做的事情和我的问题的一个简单示例:

    export class SomeDTO{
        @Transform(({ value }) => value === "true" || value === true || value === 1)
        @IsBoolean()
        doDelete : boolean;
    }

我什至试过了@Transform(({ value }) => { return value === "true" || value === true || value === 1})

现在,在我的控制器中:

@Post("something")
someOperation(@Body()  data : SomeDTO){
    console.log(data); 
}

记录数据,预期的布尔值 doDelete 仍然是一个字符串,并没有转换为其原生布尔类型。

是否试过提供这样的数据: @Transform(({ value }) => { return false})

但是在controller中,如果我们把原来的DTO doDelete设置为true,数据还是一样的。它不会像我们通过 @Transform().

暗示的那样转换为 false

我是不是做错了什么?感谢您的帮助和启发。

我已经尝试了这些相关参考,但似乎没有任何效果。

如果 transform: true 未设置为 ValidationPipe 的选项,则您使用的 @Transform() 将仅在内存中用于 class-validator 检查,而不是作为传递给路由处理程序的值持续存在。设置 transform: true 意味着 Nest 将传回已发送内容的 plainToInstance 值。