學習 NESTJS feat Part 11 === ![](https://i.imgur.com/1fldI8k.png) --- ###### tags: `Nestjs`,`TypeScript`,`TypeORM`,`Project`,`Serialize` <br> 上個章節完成了從Console log 裏看到Request經過管道的時候取到值。 那現在就來“焊接”整個正常使用的通道吧! ### 創建新的 UserDTO 開始一個新的dto在 檔案 dtos > User.dto.ts 這一步是爲了Find而做設定的,未來如果想要客制化和新增每一個request都用不一樣的DTO而設計。 ![](https://i.imgur.com/Rxj772o.png) 其實這裏并沒有什麽秘訣和較難理解的東西。設立DTO是爲了要用它來做顯示和過篩Expose通過的值。 *** ### 完成 SerializeInterceptor ![](https://i.imgur.com/gMK0YM9.png) 這裏拿掉了所有的 consolelog,然後把DTO 改成props types 的 DTO。 先設立了門檻,然後輪到Data,再來就是 excludeExtraneousValues = true. #### excludeExtraneousValues 當從一個值對象轉換類的時候,用來標識無關的屬性,這同時也適用在有的屬性在類中沒有的,要不要排除在外,但這裏需在類的屬性上加 @Expose() 或 @Exclude() 裝飾器。 *** ### 最後回到 UserController ![](https://i.imgur.com/CnDX7Rk.png) ![](https://i.imgur.com/HQHqxEx.png) 先導入 UserDTO ,然後到findUser 的 通道設立為全新的通道。 @UseInterceptors( new SerializeInterceptor(UserDTO)) 修改以上這一行就好了。 這裏的 Interceptor 會追尋 UserDTO 的格式去限制findUser這個 request。 讓我們來看看結果。 ![](https://i.imgur.com/BrmQ4fD.png) 我們這裏顯示id 和 email,如果我們再新增一個password。 ![](https://i.imgur.com/of6HBfv.png) ![](https://i.imgur.com/FtUFID4.png) 密碼就出現了。 ![](https://i.imgur.com/aMUj2Ov.png) ![](https://i.imgur.com/MLTqtIB.png) 如果把密碼做Exclude,密碼就不會做顯示了。