---
# System prepended metadata

title: "\U0001F3C5 Day 34 - 實作取得按讚貼文列表"
tags: [Node.js 直播班 - 2024 春季班]

---

# 🏅 Day 34 - 實作取得按讚貼文列表

練習整合運用先前提到的技巧：
- router 
- Moogoose find()、populate()
- JWT middleware

實作出設計稿 `8.我按讚的貼文` 頁面的「取得使用者按讚貼文列表功能」

### 流程
當使用者按讚，將按讚的使用者 ID 存到該則貼文資料 likes 陣列中，在使用者的個人頁面可以嘗試取得貼文資料中 likes 欄位含有該使用者 ID 的貼文

> 實作前準備
> - 預先新增一些測試的貼文資料以及註冊新增使用者資料，在 MongoDB Compass 將已註冊的使用者 ID 加入貼文的 likes 欄位中
> :::spoiler 如圖
> ![](https://i.imgur.com/OWLguRc.png)
> :::

### 開始實作
- 設計一個 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 連結貼至底下回報就算完成了喔! 
解答位置請參考下圖（需打開程式碼的部分觀看）

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

<!-- 解答：  

`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)|

