學習 NESTJS feat Part 4 ===  --- ###### tags: `Nestjs`,`TypeScript`,`TypeORM`,`Project` <br> ## 執行 Create 和 Save 功能 終於來到了比較核心的功能講解,經過了consolelog 回傳了解過,證明了整體的架構是沒問題的。 後端的基本CRUD,説的就是得到POST的結果,轉換,再傳到表單裏面。 這裏我們會使用SQLite 來做一些簡單的Table display。  以上的圖説明了: - Create():轉換能接受的格式,進一步檢測是否符合格式或REG。 - Save(): 存進SQl 做保存或者存成Json到伺服器。 所以我們需要手刻以上兩種功能。 ### 製作Create()  我們從TypeORM 呼叫了 InjectRepository 去所得 User的結構。 那什麽是 **@InjectRepository** 呢? 在範本上,@InjectRepository的説法是,它是一個常見的裝飾器,用在使用以來注入的應用程式中注入一個特定的Repository對象。 一般來説,這個裝飾器可以用在一個類的構造函數上,用來注入一個指定的Repository對象。 看看上面的圖: ```typescript= constructor( @InjectRepository(User) private repo: Repository<User>){} ``` 這一段是在宣告,repo 將成爲注入到repository的對象哦! 然後格式是User這樣的type。 至於爲什麽type 是 Private,可以參考這個: [constructor 的private和public 区别和用途](https://blog.csdn.net/weixin_54163765/article/details/117356187) 因爲 InjectRepository 了 repo 這個變數,所以使得在UsersService裏都可以使用。 然後就開始製造自己的service: ```typescript= create(email:string, password:string){ const user = this.repo.create({email,password}); return this.repo.save(user); } ``` create的格式是必須有email 和 password 才可以被生成。 當user拿到了這樣的參數,就回傳給save的功能。 ### 回到Controller  我們到了 controller 以後,導入 user 的 Service 。 把 Console Log 換 ```typescript= return this.userService.create(body.email,body.password); ``` 看看圖片,constructor裏已經用injection來自users.service 的 userService, 那我們就直接使用CreateUSerDto的格式來做create,完成了我們的controller。 然後我們就可以到 POSTman 去開始測試POST看看有沒有結果。  我們的DB出現了結果! 表示了Create 和 Save 也完成了它的任務。存到DB裏頭。 那我們就可以進入下個章節了!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up