--- 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 ## 回報流程 將答案連結貼至底下回報就算完成了喔! 解答位置請參考下圖(需打開程式碼的部分觀看) ![](https://i.imgur.com/vftL5i0.png) <!-- 解答: 範例參考(可自行優化程式碼) ```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) |