---
# System prepended metadata

title: "\U0001F3C5 Day 15 - req.body"
tags: [Node.js 直播班 - 2024 春季班]

---

# 🏅 Day 15 - req.body
若客戶端請求有 request body（像是 POST 的時候），可使用 req.body 取得 request body 的 `key: value` 資料

範例
```
POST 'http://localhost:3000/posts' 

將資料帶入 request body
{
  title: '貼文標題',
  content: '貼文內容',
  image: 'https://img-url'
}
```

```javascript
app.post('/products', async (req, res, next) => {
  try {
    const data = req.body;  // 取得帶入的資料
    if (data.content) {     // 如果有資料
      // 使用 mongoose 將 data 新增至資料庫 
      const newPost = await Post.create(
        {
          title: data.title,
          content: data.content,
          image: data.image
        }
      );
      res.status(200).json({
        status: 'success',
        message: '新增成功',
      });
    } else {
      console.log("欄位填寫錯誤")
    }
  } catch (error) {
      console.log(error);
  }
});
```

### 參考資源
- [Express - API](https://expressjs.com/zh-tw/api.html)


題目
---
請嘗試透過 POST API 的 req.body [註冊會員](https://xd.adobe.com/view/c0763dbe-fc15-42e8-be0b-8956ed03e675-9525/screen/1fc65740-4d7f-4df7-ac4d-8cf0d573f4e2/)，並使用 mongoose 將資料新增至 User Model 中，成功時回傳 `${暱稱} 註冊成功` 

```
資料：
{
  nickname: 'Tom',
  email: 'tom@mail.com',
  password: 'abcd1234'
}
```
完整以下程式碼（補上 `...` 的部分）：
```javascript=
app.post('/register', async (req, res) => {
  try {
    const data = ...;
    if (nickname != '' && email != '' && password != '') {
      const newUser = await ...({
        nickname: ...,
        email: ...,
        password: ...
      });
      res.status(200).json({
        status: 'success',
        message: `...`,
      });
    }
  } catch (error) {
    console.log(error);
  }
});
```


## 回報流程

將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔! 
解答位置請參考下圖（需打開程式碼的部分觀看）

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

<!-- 解答：  

app.post('/register', async (req, res) => {
  try {
    const data = req.body;
    if (nickname != '' && email != '' && password != '') {
      const newUser = await User.create({
        nickname: data.nickname,
        email: data.email,
        password: data.password
      });
      res.status(200).json({
        status: 'success',
        message: `${暱稱} 註冊成功`,
      });
    }
  } catch (error) {
    console.log(error);
  }
});
-->




回報區
---
<!-- 
將答案貼至下方表格內，格式：
| Discord 暱稱 | [CodePen](連結) |
-->

|    Discord    |   CodePen ／ 答案  |
|:-------------:|:-----------------:|
| xxx | [CodePen]() |
| 苡安 | [hackmd](https://hackmd.io/@L7K9-66lSeagS28AP0_GjQ/HJnIoCBWC) |
| Aida | [CodePen](https://codepen.io/ada23410/pen/xxeMVyL?editors=0010) |
| jenny7532 | [CodePen](https://codepen.io/wei-chen-wu/pen/zYXeBaa) |
| Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/poBGEjL) |
|wei|[CodePen](https://codepen.io/Wei-the-sasster/pen/MWRLbde?editors=1010)|
|群嘉|[CodePen](https://codepen.io/efzdamnp-the-lessful/pen/gOyqgjp?editors=0010)|
|william_hsu|[CodePen](https://codepen.io/william8815/pen/VwNgWXN)|
|tung030374|[CodePen](https://codepen.io/tung__u/pen/BaEMwOb)|
|Hank|[CodePen](https://codepen.io/tw1720/pen/NWmowrq)|
|Tiya|[CodePen](https://codepen.io/Tiya_blank/pen/rNbQPbY)|
|Lobinda|[CodePen](https://codepen.io/Lobinda/pen/bGJzZod)|
|ej_chuang|[CodePen](https://codepen.io/EJChuang/pen/RwOdjLE)|
|Ciel|[CodePen](https://codepen.io/nycteachen/pen/yLrraEv)|
|Henry|[CodePen](https://codepen.io/hekman1122/pen/JjVwWxR?editors=0010)|
| Fabio20 | [CodePen](https://codepen.io/fabio7621/pen/QWPROWJ?editors=1010) |
| william威良 | [CodePen](https://codepen.io/snowman12320/pen/gOyJXbv) |
| Benson | [CodePen](https://codepen.io/nosneb83/pen/LYvoOZx) |
| 瑀君 | [HackMD](https://hackmd.io/@sh5ojkmt/Hk8iN0lGC) |
| 2魚 | [CodePen](https://codepen.io/ijrekmsn-the-sans/pen/VwNJZrL) |
| albertyang3576 | [CodePen](https://codepen.io/albertyang3576/pen/zYXVdpE) |
| runweiting | [CodePen](https://codepen.io/weiting14/pen/oNOKBxj) |
| 羽 | [CodePen](https://codepen.io/lingling-Syu/pen/rNgBvXj?editors=0010) |
| Theodore(0510) | [CodePen](https://codepen.io/GustavoFringgg/pen/wvbvEGm) |
| zaoannihao | [CodePen](https://codepen.io/ckhwdvrx-the-solid/pen/NWVGQzv)|