# 🏅 Day 40 - 實作取得所有貼文並帶入 comment 練習整合運用先前提到的技巧: - router - Moogoose find()、populate()、sort() 實作出設計稿 `3-2.全體動態牆-有留言` 頁面的「取得所有貼文並帶入 comment 功能」 ### 開始實作 - GET `/posts` 路由,不需登入即可觀看所有貼文 - 使用 `populate()` 關聯 comments 欄位 - 取得貼文時需要顯示使用者的名稱 `name` 與圖片 `photo`、留言的內容 `comment` 與留言的使用者 `user` - 將取得的貼文依照 `createdAt` 排序 - 回傳成功訊息及貼文資料 依照上方需求完整以下程式碼,補上 `...` 的部分 `app.js` ```javascript= const postsRouter = require('./routes/posts'); app.use('/posts', postsRouter); ``` `routes/posts.js` ```javascript= router....('...', async (req, res, next) => { const post = await Post.find()....({ path: 'user', select: '... ...' }).populate({ path: 'comments', select: '... ...' }).sort('...'); res.status(200).json({ status: 'success', ... }) }); ``` ## 回報流程 將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔! 解答位置請參考下圖(需打開程式碼的部分觀看) ![](https://i.imgur.com/vftL5i0.png) <!-- 解答: `routes/posts.js` ```javascript= router.get('/', async (req, res, next) => { const post = await Post.find().populate({ path: 'user', select: 'name photo' }).populate({ path: 'comments', select: 'comment user' }).sort('createdAt'); res.status(200).json({ status: 'success', post }) }); ``` --> 回報區 --- <!-- 將答案貼至下方表格內,格式: | Discord 暱稱 | [CodePen](連結) | --> | Discord | CodePen / 答案 | |:-------------:|:-----------------:| | xxx | [CodePen]() | | 苡安 | [hackmd](https://hackmd.io/@L7K9-66lSeagS28AP0_GjQ/H1IoAlV4C) | | Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/VwOmopW) | | wei | [CodePen](https://hackmd.io/@xu7yoa5cSsqaron7h9XhUw/SkzxGLVNA)| | runweiting | [CodePen](https://codepen.io/weiting14/pen/RwmKrjx) | | william威良 | [CodePen](https://codepen.io/snowman12320/pen/KKLavPG) | | jenny7532 | [CodePen](https://codepen.io/wei-chen-wu/pen/jOoBbaG) | | mei | [CodePen](https://codepen.io/l_umei/pen/bGyqYEp)| | Hank | [CodePen](https://codepen.io/tw1720/pen/QWRWgex)|