# 🏅 Day 34 - 實作取得按讚貼文列表
練習整合運用先前提到的技巧:
- router
- Moogoose find()、populate()
- JWT middleware
實作出設計稿 `8.我按讚的貼文` 頁面的「取得使用者按讚貼文列表功能」
### 流程
當使用者按讚,將按讚的使用者 ID 存到該則貼文資料 likes 陣列中,在使用者的個人頁面可以嘗試取得貼文資料中 likes 欄位含有該使用者 ID 的貼文
> 實作前準備
> - 預先新增一些測試的貼文資料以及註冊新增使用者資料,在 MongoDB Compass 將已註冊的使用者 ID 加入貼文的 likes 欄位中
> :::spoiler 如圖
> 
> :::
### 開始實作
- 設計一個 GET `/users/getLikeList` 路由,需登入才能請求貼文資料
- 當使用者登入並驗證 JWT 正確,尋找資料庫中 likes 欄位包含該使用者 ID 的貼文
- 找出的貼文需顯示使用者的`name`及 `_id`
- 回傳成功訊息及貼文資料
依照上方需求完整以下程式碼,補上 `...` 的部分
`app.js`
```javascript=
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
```
`routes/users.js`
```javascript=
const router = express.Router();
const Post = require('../models/postsModel');
const { isAuth } = require('../service/auth');
....get('...', ..., handleErrorAsync(async (req, res, next) => {
const likeList = await Post....({
likes: { $in: [...] }
})....({
path: "user",
select: "... ..."
});
res.status(200).json({
status: 'success',
...
});
}))
module.exports = router;
```
## 回報流程
將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔!
解答位置請參考下圖(需打開程式碼的部分觀看)

<!-- 解答:
`app.js`
```javascript=
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
```
`routes/users.js`
```javascript=
const router = express.Router();
const Post = require('../models/postsModel');
const { isAuth } = require('../service/auth');
router.get('/getLikeList', isAuth, handleErrorAsync(async (req, res, next) => {
const likeList = await Post.find({
likes: { $in: [req.user.id] }
}).populate({
path: "user",
select: "name _id"
});
res.status(200).json({
status: 'success',
likeList
});
}))
module.exports = router;
```
-->
回報區
---
<!--
將答案貼至下方表格內,格式:
| Discord 暱稱 | [CodePen](連結) |
-->
| Discord | CodePen / 答案 |
|:-------------:|:-----------------:|
| xxx | [CodePen]() |
| 苡安 | [hackmd](https://hackmd.io/@L7K9-66lSeagS28AP0_GjQ/rJopM_YmR) |
| jenny7532 | [CodePen](https://codepen.io/wei-chen-wu/pen/mdYPWzy) |
| wei | [CodePen](https://hackmd.io/@xu7yoa5cSsqaron7h9XhUw/BJw6BhKmR)|
| Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/gOJrxLV)|
| william威良 | [CodePen](https://codepen.io/snowman12320/pen/QWRNoBX)|
| runweiting | [CodePen](https://codepen.io/weiting14/pen/QWRGMzW)|
| mei| [CodePen](https://codepen.io/l_umei/pen/wvbgVOQ)|
| Fabio20 | [CodePen](https://codepen.io/fabio7621/pen/ZENeRbG?editors=1010) |
|Lobinda|[HackMD](https://hackmd.io/@Lobinda/H10o6taVA)|
|Hank|[CodePen](https://codepen.io/tw1720/pen/wvbveLp)|