---
tags: Node.js 直播班 - 2023 春季班
---
# 🏅 Day 15 - req.body
若客戶端請求有 request body,可使用 req.body 取得 request body 的 `key: value` 資料
範例
```
POST 'http://localhost:3000/products'
將資料帶入 request body
{
"product": "hamburger",
"quantity": 2,
"price": 50
}
```
```javascript
app.post('/products', async function(req, res, next) {
try {
const data = req.body;
if (data.product) {
// 使用 mongoose 將 data 新增至資料庫
const newProduct = await Product.create(
{
product: data.product,
quantity: data.quantity,
price: data.price
}
);
res.status(200).json({
status: 'success',
data,
});
} else {
console.log("欄位填寫錯誤")
}
} catch (error) {
console.log(error)
}
});
```
### 參考資源
- [Express - API](https://expressjs.com/zh-tw/api.html)
## 題目(將答案寫在 **GitHub Repo** 並提交至回報區)
請參考[最終作業設計稿](https://xd.adobe.com/view/c0763dbe-fc15-42e8-be0b-8956ed03e675-9525/grid),透過 POST API 的 req.body 新增一則貼文,並加上 Schema 欄位資料驗證,可複製或下載此[程式碼](https://github.com/dogwantfly/express-add-post)練習,完成後提交自己的 GitHub Repo
## 回報流程
將答案連結貼至底下回報就算完成了喔!
解答位置請參考下圖(需打開程式碼的部分觀看)

<!-- 解答:
範例參考(可自行優化程式碼)
```javascript
router.post('/', async(req, res, next) => {
try{
const data = req.body;
if(data.content !== undefined){
const newPost = await Post.create(
{
name: data.name,
content: data.content,
tags:data.tags,
type:data.type
}
);
res.status(200).json({
status: 'success',
"data": newPost
});
}else{
res.status(400).json({
"status": 'false',
"message": "欄位未填寫正確,或無此 ID"
});
}
}catch (error){
res.status(400).json({
status: 'false',
"message": "欄位未填寫正確,或無此 ID"
});
}
})
```
-->
回報區
---
| 報數 | 組別/Discord 名字 | Codepen/HackMD/其他回饋 |
|:----:|:-----------------------:|:-------------------------------------------------------------------------:|
| 1 | 北 10 組 / Benson | [Github Benson - Day 15](https://github.com/ioveasdkre/HexschoolOperation/tree/main/NodejsEnterpriseClass/day40-tasks/day15/app.ts) |
| 2 | 中 4 組 / jimkk159 | [HackMD - Day 15](https://hackmd.io/pG5cE1iNRqy_hUoGHO1Keg) |
| 3 | 北 12 組 / Sam Lin | [GitHub - Day 15](https://github.com/samlin1122/hex-school/blob/main/daily-challenges/day15)
| 4 | 中 3 組 / Wendy | [GitHub - Day 15](https://github.com/Wendy03/express-add-post)|
| 5 | 北 5 組 / 圈圈 | [GitHub - Day 15](https://github.com/panduola666/hexschool-node.js-homework/tree/main/day15)|
| 6 | 北 13 組 / sasha | [HackMD - Day 15](https://hackmd.io/@sashaye/SJHV0HdW2)|
| 7 | 北 1 組 / PittWu | [Blog Post - Day 15](https://pitt-wu-blog.vercel.app/docs/day15-request-body) |
| 8 | 北 13 組 / Louisa | [GitHub - Day 15](https://github.com/louisa0416/NodejsEnterpriseClass/tree/master/daily-task/day15) |
| 9 | 北 16 組 / 啊培培 | [GitHub - Day 15](https://github.com/LABIBI-LG/Courses/tree/main/hexschool/nodeJS/Live_Course/Daily_Tasks/day15) |