--- tags: Node.js 直播班 - 2022 春季班 --- # 🏅 Day 19 ## 取得資料搭配 sort()、limit() Mongoose 的 `sort()` 可使用物件寫法 ``` sort({ field: 'asc', test: -1 }) // field 欄位以升序排列,test 欄位以降序排列 ``` ,也可只帶入欄位名稱(欄位名稱前加上 - 代表降序排列) ``` query.sort('field -test'); // field 欄位以升序排列,test 欄位以降序排列 ``` Mongoose 的 `limit()` 可直接帶入數字,如:`.limit(20)` 代表最多呈現 20 筆資料 ### 參考資源 [Query.prototype.sort()](https://mongoosejs.com/docs/api/query.html#query_Query-sort) [Query.prototype.limit()](https://mongoosejs.com/docs/api/query.html#query_Query-limit) [query - 取得網址參數](https://courses.hexschool.com/courses/1670869/lectures/39299606)(章節影片) ### 題目(將答案寫在 HackMD 並提交至回報區) 在 GET posts 網址列帶入排序及限制筆數的參數 並運用 Express 提供的 req.query 取得網址列的參數,將尋找到符合的資料設定排序及呈現指定資料數量 提交範例 ```javascript // routes/posts.js router.get('/', async function(req, res, next) { // 使用三元運算子判斷是否為 asc (由舊至新),若是則由舊至新排列,否則由新至舊排列 const timeSort = // 帶入網址列的參數 const limit = const post = await Post.find()/* 請填入答案 */ res.status(200).json({ status: 'success', data: { post } }); }) ``` 可自行建立專案或使用先前提供的[專案](https://github.com/dogwantfly/express-add-post)測試是否正確運作 回報流程 --- 請同學依照下圖教學觀看解答、回報答案: ![](https://i.imgur.com/QtL8zEW.png) 回報格式:請在「回報區」貼上 CodePen 或 HackMD 連結回報答案 (為了統計人數,請同學依序加上「報數」) <!-- 解答 ```javascript router.get('/', async function(req, res, next) { const timeSort = req.query.timeSort === 'asc' ? 'createdAt' : '-createdAt'; const limit = req.query.limit; const post = await Post.find().sort(timeSort).limit(limit); res.status(200).json({ status: 'success', data: { post } }); }) ``` --> 回報區 --- | 報數 | 組別 / 名字 | codepen / hackMD / 其他回饋 | | | ---- | -------------------- | ------------------------------------------------------------- | --- | | 1 | 第 6 組 / Wendy | [HackMD](https://hackmd.io/@0k_MSPdgRPujozP6w_D-bA/r187OLy85) | | | 2 | 第 4 組 / 小宥 | [HackMD](https://hackmd.io/QphgkEH0Szy0P7s3F8hYog) | | | 3 | 第 3 組 / HedgehogKU | [HackMD](https://hackmd.io/guu5z7FgQCixtW6qR-FswA) | | | 4 | 第 8 組 / Hank | [HackMD](https://hackmd.io/@hank-hsiao/S1oyCD18c) | | | 5 | 第 3 組 / hiYifang | [HackMD](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/ryrhdUASq) | | | 6 | 第 2 組 / Vic | [HackMD](https://hackmd.io/mvzGJFysSN-hMwj82EJrsA) | | | 7 | 第 4 組 / sihle | [HackMD](https://hackmd.io/@bugbug777/rkO3YK1Uc) | | | 8 | 第 14 組|East | [HackMD](https://hackmd.io/eKHHio00RO2c0-GV9x6KBA) | | | 9 | Naiky | [HackMD](https://hackmd.io/@UWBC7rrORiKaLSBg226mZg/r1WCoYJ89) | | | 10 | 第 5 組 / Nap | [HackMD](https://hackmd.io/@8x8YzkXNSzafUSO3LZTmUw/HyqKEn189) | | | 11 | 第 4 組 / 苡安 | [HackMD](https://hackmd.io/nRb39sHwSeGuOh47lES-qA) | | | 12 | 第 5 組 / Hazel | [HackMD@Hazel](https://hackmd.io/@hazelwu/day19) | ) | | 13 | 第 11 組 / Han Lai | [HackMD](https://hackmd.io/kpHx1QcXSym_iZv2HO9RBg) | | |14 |第 9 組 / konstante |[HackMD](https://hackmd.io/82HZdxBHSTqzhrPfxZiung) | | | 15 | 第 9 組 / 黃士桓 | [HackMD](https://hackmd.io/RNwKlCA6RBy4sUO1HcHLfA) | | 16 | 第 2 組 / wendy.li | [HackMD](https://hackmd.io/jSWzXhpeRh25AzKCYwJ_yg)| | 16 | 第 2 組 / Jin | [HackMD](https://hackmd.io/eklcKwvzR1-ZvC1h6CrkQQ)| | 17 | 第 3 組 / Justin | [HackMD](https://hackmd.io/9U4BmmFhSs6JQ-AZ7Fhwvg)| | 18 | 第 7 組 / 程翔 | [HackMD](https://hackmd.io/NxjMQl3dQcqGzHiHN7pd9g?both)| | 19 | 第 3 組 / Hobby | [HackMD](https://hackmd.io/@hobbyling/day19)| | 20 | 第 2 組 / joe chang | [HackMD](https://hackmd.io/uaRTw9c0TgOrADyXMmGL0Q?view#54---sort%E3%80%81limit)| | 21 | 第 1 組 / Claire | [HackMD](https://hackmd.io/t4oE4-4VQd-JABFb_23zBQ)| |22|第13組 /kfc |[HackMD](https://hackmd.io/8Wmatwi4RXKBiSuvtFzL8w?view)| | 23 | nick6303 | [HackMd](https://hackmd.io/Qpm524O4SJiDWaDZotz-ww) | 24 | 第 15 組 / Chiu | [HackMD](https://hackmd.io/ImcBQgLqSPaqdI3L-Wcj6w)| | 25 | 第 2 組 / Rikkubook | [HackMD](https://hackmd.io/guvnfnM8RriccBqth2Qn2A?both)| | 26 | 第11 組 / mandy | [HackMD](https://hackmd.io/h2G86JaWSZa_qqS0TXa4MA?view)| | 27 | 第 1 組 / Ed Huang | [HackMD](https://hackmd.io/7H5j7DsdRpaM34uLKpzLVQ?view)| | 28 | 第 2 組 / peter | [HackMD](https://hackmd.io/@peterchen1024/BkzxIvUL5)| | 29 | 第 12 組 / Jimmy | [HackMD](https://hackmd.io/WZ413c1fRhSkvQqaLUW5HA)| | 30 | 第 10 組 / Otis | [HackMD](https://hackmd.io/unki_keHS-2lqUWAkCj1pQ?view)| | 31 | 第 7 組 / jason06286 | [HackMD](https://hackmd.io/Jt_7V7MCSImQ4nojUUmjlw)| | 32 | 第 3 組 / 小葉 | [HackMD](https://hackmd.io/@FyKv37KcRSWqAO_e336w8g/r1XIg_yvq)| | 33 | 第 16 組 / 皓皓 | [HackMD](https://hackmd.io/@cutecat8110/ByQNNijwq)| | 34 | 第 15 組 / yolala | [HackMD](https://hackmd.io/_FA3ZbVZSBOSXNgtQBEc-w)|