---
# System prepended metadata

title: 學習 NESTJS feat Part 4
tags: [TypeScript, TypeORM, Nestjs, Project]

---

學習 NESTJS feat Part 4
===
![](https://i.imgur.com/1fldI8k.png)


---
###### tags: `Nestjs`,`TypeScript`,`TypeORM`,`Project`

<br>

## 執行 Create 和 Save 功能

終於來到了比較核心的功能講解，經過了consolelog 回傳了解過，證明了整體的架構是沒問題的。
後端的基本CRUD，説的就是得到POST的結果，轉換，再傳到表單裏面。
這裏我們會使用SQLite 來做一些簡單的Table display。

![](https://i.imgur.com/TqpRZSX.png)

以上的圖説明了:
-    Create():轉換能接受的格式，進一步檢測是否符合格式或REG。
-    Save(): 存進SQl 做保存或者存成Json到伺服器。

所以我們需要手刻以上兩種功能。

### 製作Create()

![](https://i.imgur.com/OAwPvUY.png)

我們從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

![](https://i.imgur.com/7re7KD9.png)

我們到了 controller 以後，導入 user 的 Service 。
把 Console Log 換

```typescript=

    return this.userService.create(body.email,body.password);

```
看看圖片，constructor裏已經用injection來自users.service 的 userService，
那我們就直接使用CreateUSerDto的格式來做create,完成了我們的controller。

然後我們就可以到 POSTman 去開始測試POST看看有沒有結果。
![](https://i.imgur.com/Jd8xADf.png)

我們的DB出現了結果！
表示了Create 和 Save 也完成了它的任務。存到DB裏頭。

那我們就可以進入下個章節了！
