我在 DTO 中使用了 nestJS 和類轉換器。
這是我所做的和我的問題的一個簡單示例:
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})
但是在控制器中,如果我們將原來的 DTO doDelete 設定為 true,資料還是一樣的。它不會像我們暗示的那樣轉換為 false @Transform()。
我做錯什么了嗎?感謝您的幫助并有所啟發。
我已經嘗試過這些相關的參考資料,但似乎沒有任何效果。
- 大搖大擺的布林值作為字串而不是 NestJS 中的布林值發送
- https://github.com/nestjs/nest/issues/766#issuecomment-470261677
uj5u.com熱心網友回復:
如果transform: true未設定為 的選項,ValidationPipe則@Transform()您正在使用的將僅在記憶體中用于class-validator檢查,并且不會作為傳遞給路由處理程式的值保留。設定transform: true意味著 Nest 將傳回plainToInstance已經發送的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476040.html
