---
tags: Node.js 直播班 - 2022 春季班
---
# 🏅 Day 14
## req.query 篩選網址參數
除了先前使用 `req.params` 取得動態路由外,也可在 url 帶入相關資訊,再使用 `req.query` 取出網址列的參數
例如:網址列為 `https://example.com/over/there?name=ferrett&color=purple`,其中 ? 用來分隔後面帶入的參數 `name=ferret` 及 `color=purple`,多個參數之間也會使用 & 分隔
當使用者造訪此網址時, express 可以使用 req.query 取出網址列的這些參數
```javascript
app.get('https://example.com/over/there?name=ferrett&color=purple)', function(req, res) {
console.log(req.query)
...
});
// req.query
{
name: 'ferret',
color: 'purple'
}
```
使用 `req.query.name` 或 `req.query.color` 就可以取出需要的資訊做相關處理
req.query 常見的應用是搜尋關鍵字,當使用者輸入關鍵字後,會將關鍵字帶到網址列中,伺服器接收到,再藉由 req.query 取出,尋找資料庫中符合其關鍵字的資料,並回傳至客戶端
```
GET 'https://example.com/search?q=apple' // 通常會以 q 表示搜尋關鍵字
```
```javascript
app.get('/search', function(req, res) {
const q = req.query.q
const results = await Data.find(q); // 使用 mongoose 搜尋資料庫中符合 req.query.q 的資料
res.status(200).json({
status: 'success',
results: results.length,
data: {
results
}
});
});
```
### 參考資源
[Express - req.query](https://expressjs.com/zh-tw/api.html#req.query)
[query - 取得網址參數](https://courses.hexschool.com/courses/1670869/lectures/39299606)(章節影片)
### 題目(將答案寫在 HackMD 並提交至回報區)
請在 express 專案中,將以下 url 中的參數使用 req.query 取出,並回傳取出的參數(可自行建立 express 專案,先在 app.js 練習即可)
```javascript
'http://localhost:3000/products?category=music&page=1' // 在 POSTMAN 發出 GET 請求
app.get('/products', function(req, res) {
// 取出參數
/* 請在此填寫答案*/
res.status(200).json({
status: 'success',
data: {
/* 請在此填寫答案*/
}
});
});
```
回報流程
---
請同學依照下圖教學觀看解答、回報答案:

回報格式:請在「回報區」貼上 CodePen 或 HackMD 連結回報答案 (為了統計人數,請同學依序加上「報數」)
<!-- 解答
```javascript
app.get('/products', function(req, res) {
// 取出參數
const category = req.query.category;
const page = req.query.page;
res.status(200).json({
status: 'success',
data: {
category,
page,
}
});
});
```
-->
回報區
---
| 報數 | 組別 / 名字 | codepen / hackMD / 其他回饋 |
| ---- | ---------------------- | -------------------------------------------------------------------- |
| 1 | 第 6 組/ Wendy | [HackMD](https://hackmd.io/@0k_MSPdgRPujozP6w_D-bA/rJE2DzUH5) |
| 2 | 第 3 組/ Larry | [HackMD](https://hackmd.io/mn4C6-UURSGv6E2tDcpQyQ) |
| 3 | 第 2 組 / wendy.li | [HackMD](https://hackmd.io/34jSGuv9RcW_XtQDp_2JAg) |
| 4 | 第 2 組 / Vic | [HackMD](https://hackmd.io/aT0hHDX2R0Gn7wmHeFkD0w) |
| 5 | 第 4 組 / 小宥 | [HackMD](https://hackmd.io/tfoU-qtKSS2-Ta0FaYd5hw) |
| 6 | 第 3 組 / Hobby | [HackMD](https://hackmd.io/@hobbyling/day14) |
| 7 | 第 8 組 / Jordan Tseng | [HackMD](https://hackmd.io/MaOFBSjzR4eI5YUVGgnrNQ) |
| 8 | 第 3 組 / Justin | [HackMD](https://hackmd.io/DBsD3CjKR4mv2NhlhliSwQ) |
| 9 | 第 3 組 / HedgehogKU | [HackMD](https://hackmd.io/c58MMlf8RZGAplHCuKeEUQ) |
| 10 | 第 6 組 / Ruta | [HackMD](https://hackmd.io/4lb_cWK7R-SIeg112nMoDg) |
| 11 | 第 8 組 / Hank | [HackMD](https://hackmd.io/@TFOivyvXT-qpG6SieUTfgw/SkvQr78Hc) |
| 12 | 第 2 組 / Genos | [HackMD](https://hackmd.io/5A8AcAMeSSOA96WvjFH48g) |
| 13 | 第 2 組|East | [HackMD](https://hackmd.io/7oFUCnS9THKeGRdeGl7BmQ) |
| 14 | 第 2 組|Jin | [HackMD](https://hackmd.io/TpLNvcnlSiOvvbrGas4MOA) |
| 15 | 第 5 組 / Hazel | [HackMD@Hazel](https://hackmd.io/@hazelwu/day14) |
| 16 | 第 9 組 / 黃士桓 | [HackMD](https://hackmd.io/XvB01gXwT6yD7YyIB1fFxw) |
| 17 | 第 3 組 / hiYifang | [HackMD](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/HkiSA6Jrc) |
| 18 | 第 11 組 / Han Lai | [HackMD](https://hackmd.io/kP2hMUHORXynbigr9HY28w?view) |
| 19 | 第 4 組 / sihle | [HackMD](https://hackmd.io/@bugbug777/S12rHvLr5) |
| 20 | Naiky | [HackMD @Naiky](https://hackmd.io/@UWBC7rrORiKaLSBg226mZg/Sy7_9QIBq) |
| 21 | 第 4 組 / 苡安 | [HackMD](https://hackmd.io/kBO6eUxoSPuhpChM517K2Q) |
| 22 | 第 9 組 / konstante | [HackMD](https://hackmd.io/7TVozneOROuEN44b25_ntA) |
| 23 | 第 10 組 / Otis | [HackMD](https://hackmd.io/JdnXccHtSE6nNXYT2kY-rw?view) |
| 24 | 第 15 組 / Chiu | [HackMD](https://hackmd.io/yYqRjOpPQU23JVxg80HpEQ)|
| 25 | 第13組 / KFC | [HackMD](https://hackmd.io/VV_y7CcRTBWamPpGrQlE3w?view)|
| 26 | 第 11 組 / Jamie Lee | [HackMD](https://hackmd.io/REUXPNTCQymJwy7XJtyPjA?view) |
| 27 | 第 1 組 / Ed Huang | [HackMD](https://hackmd.io/dpDol8oATYKfB7Q-wn97xA?view) |
| 28 | 第10組/橘子 | [HackMD](https://hackmd.io/o3I1jYBNQOKG1xfSJKP8zg) |
| 28 | 第 2 組 / joe chang | [HackMD](https://hackmd.io/uaRTw9c0TgOrADyXMmGL0Q?view#427---reqquery-%E7%AF%A9%E9%81%B8%E7%B6%B2%E5%9D%80%E5%8F%83%E6%95%B8) |
| 29 | 第 15 組 / Tofu | [HackMD](https://hackmd.io/Ja1SKe_PTd6G9dL0rHy6lA)
| 30 | 第 1 組 / Claire | [HackMD](https://hackmd.io/mYs2b4pVTs-Xs7aSCM4ovg)
| 31 | 第 9 組 / Reynold | [HackMD](https://hackmd.io/@dL7AuQEMQ6KpCSRHaYElOA/H1iBpgFBc)
| 32 | 第 2 組 / peter | [HackMD](https://hackmd.io/@peterchen1024/HJOX9GtB9)
| 33 | 第 14 組 / Uniza| [HackMD](https://hackmd.io/jzmB1sQARDaqZdftbvh4Dw)
| 34 | 第 1 組 / snow| [HackMD](https://hackmd.io/@snowsuika/rymhtsiH5)
| 35 | 第 2 組 / Rikkubook| [HackMD](https://hackmd.io/7TyINeRxRCWs5Di6dqBIcQ)
| 36 | 第 7 組 / jason06286| [HackMD](https://hackmd.io/KeaRpLGrQxSa0kJKMyHWdA)
| 37 | 第 12 組 / Jimmy| [HackMD](https://hackmd.io/72pCNFv4SeGj8OfZEB5V8Q)
| 38 | 第 16 組 / 皓皓| [HackMD](https://hackmd.io/01bst263RISj-DCm1HP43g)
| 39 | 第 5 組 / Nap| [HackMD](https://hackmd.io/@8x8YzkXNSzafUSO3LZTmUw/Byig-2CSq)
| 40 | 第 3 組 / 小葉| [HackMD](https://hackmd.io/@FyKv37KcRSWqAO_e336w8g/r1w6uoJI5)
| 41 | nick | [HackMD](https://hackmd.io/YoMvWaguQbmbqtJYJlCSow)
| 42| 第 11 組 / mandy | [HackMD]( https://hackmd.io/vFmWZoHqT1q4LTVHNDMpdQ)
| 43| 第 14 組 / yolala | [HackMD]( https://hackmd.io/NaN0lzgzSU6RQJtIpMr0Hw)