@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
我是不是做错了什么?感谢您的帮助和启发。
我已经尝试了这些相关参考,但似乎没有任何效果。
- Boolean in swagger sent as string instead of boolean in NestJS
- https://github.com/nestjs/nest/issues/766#issuecomment-470261677
如果 transform: true
未设置为 ValidationPipe
的选项,则您使用的 @Transform()
将仅在内存中用于 class-validator
检查,而不是作为传递给路由处理程序的值持续存在。设置 transform: true
意味着 Nest 将传回已发送内容的 plainToInstance
值。
我在 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()
.
我是不是做错了什么?感谢您的帮助和启发。
我已经尝试了这些相关参考,但似乎没有任何效果。
- Boolean in swagger sent as string instead of boolean in NestJS
- https://github.com/nestjs/nest/issues/766#issuecomment-470261677
如果 transform: true
未设置为 ValidationPipe
的选项,则您使用的 @Transform()
将仅在内存中用于 class-validator
检查,而不是作为传递给路由处理程序的值持续存在。设置 transform: true
意味着 Nest 将传回已发送内容的 plainToInstance
值。