學習 NESTJS feat Part 8 === ![](https://i.imgur.com/1fldI8k.png) --- ###### tags: `Nestjs`,`TypeScript`,`TypeORM`,`Project` <br> ## 一起來做Delete 和 Update的功能 Delete 和 Update 的功能是需要索取和具有互動式的功能。 所以在這裏我們會需要用**Async Await**。 ![](https://i.imgur.com/17C7ucT.png) 關於Update呢,出現了一個叫 attrs: Partial<User> 先説爲什麽要用Partial。 在Update這個Service裏面呢,我們會update 單個email, 單個password 或者{ email,password }這樣。 這時候要怎麽具有 || 的功能呢?在nest 就要使用 Partial ! ![](https://i.imgur.com/BuoaOJa.png) --- 簡單地說就是可以選擇性使用dto裏面的東西。 當這個步驟完成以後,我們就來到 user > dtos > 創建新的檔案叫 update-user.dto.ts ![](https://i.imgur.com/lZA7IFW.png) 這裏除了要把class-validator 去濾掉email 和 password 以外,還增加了 **@IsOptional()** 主要是表示這裏我們可以透過 Partrial 去選擇任何一個值。 --- ### 完成Service設定 進入Controller ![](https://i.imgur.com/77pmcrQ.png) **這裏取到的動作例如 remove , update ,create ,find 都是源自Repository 的哦 那remove其實也沒什麽好説的啦,就是取得url的params設定的id。 取到了方向進行Table上的刪除動作。 --- 這裏要小小的説明下,在SQL的世界裏,ID是primaryKey,那是獨一無二的存在, 即使今天刪除的id不再存在,可是系統依然認爲那個key用過了,不會再次使用哦。 --- 那回到update的部分,看圖的解説,一樣是取得url上的id。如果參照剛剛設立好的Dto 作爲Body的type去做傳送。然後傳送的對象為ID 和 身體的内容。 所以今天的Body只修改了Email,那就會把舊的Email覆蓋掉, 還記得DTO的設定嗎?沒錯,就是用了Optional,意味著我不一定兩個都要傳。我只要傳其中一個也可以。 ![](https://i.imgur.com/LKU2xUb.png) 這裏使用了PATCH。(不是GET / DELETE / POST) ![](https://i.imgur.com/zJkVrie.png) 原來PATCH(記得在做Query的時候必須大寫哦)是做更動資料的send request。 通常會先做GET調動到資料再做PATCH更動。 ![](https://i.imgur.com/lZIykLz.png) 最後也成功完成了更新。