# 🏅 Day 17 - 取得資料搭配 sort()、limit() Mongoose 的 `sort()` 可使用物件寫法 ``` Model.find().sort({ field: 'asc', test: -1 }) // field 欄位以升序排列,test 欄位以降序排列 ``` ,也可只帶入欄位名稱(欄位名稱前加上 `-` 代表降序排列) ``` Model.find().sort('field -test'); // field 欄位以升序排列,test 欄位以降序排列 ``` Mongoose 的 `limit()` 可直接帶入數字,如:`Model.find().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 - 取得網址參數」 題目 --- 在 GET posts 網址列帶入排序及限制筆數的參數 並運用 Express 提供的 `req.query` 取得網址列的參數,將尋找到符合的資料設定排序及呈現指定資料數量 `GET /posts?timeSort=asc&limit=20` 請完整下方程式碼(根據註解補上 `...` 的部分) routes/posts.js ```javascript= router.get('/', async function(req, res) { // 使用三元運算子判斷是否為 asc (由舊至新),若是則由舊至新(照建立時間 createdAt 順序)排列,否則由新至舊排列 const timeSortData = ... // 帶入網址列的 limit 參數 const limitNum = ... // 運用上面兩個變數尋找前 20 筆由舊至新的資料 const posts = await Post.find()... res.status(200).json({ status: 'success', data: posts }); }) ``` ## 回報流程 將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔! 解答位置請參考下圖(需打開程式碼的部分觀看) ![](https://i.imgur.com/vftL5i0.png) <!-- 解答: ```javascript router.get('/', async function(req, res, next) { const timeSortData = req.query.timeSort === 'asc' ? 'createdAt' : '-createdAt'; const limitNum = req.query.limit; const posts = await Post.find().sort(timeSortData).limit(limitNum); res.status(200).json({ status: 'success', data: posts }); }) ``` --> 回報區 --- <!-- 將答案貼至下方表格內,格式: | Discord 暱稱 | [CodePen](連結) | --> | Discord | CodePen / 答案 | |:-------------:|:-----------------:| | xxx | [CodePen]() | | 苡安 | [hackmd](https://hackmd.io/@L7K9-66lSeagS28AP0_GjQ/rkz0aOOZR) | | Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/LYvaWpa) | |wei|[hackmd](https://hackmd.io/4sz4K-fNS0i8X2AAZgINEQ?view)| |ej_chuang|[CodePen](https://codepen.io/EJChuang/pen/MWRxOVp)| |Lobinda|[CodePen](https://codepen.io/Lobinda/pen/LYvqaOJ)| |william_hsu|[CodePen](https://codepen.io/william8815/pen/KKYErQz)| |Tiya|[CodePen](https://codepen.io/Tiya_blank/pen/rNbQPbY)| |Aida|[CodePen](https://codepen.io/ada23410/pen/PoggPPy?editors=0010)| |Ciel|[CodePen](https://codepen.io/nycteachen/pen/qBwwqoN)| |jenny7532|[CodePen](https://codepen.io/wei-chen-wu/pen/eYoogyB)| |tung030374|[CodePen](https://codepen.io/tung__u/pen/OJGGEqZ?editors=0010)| |Henry|[hackmd](https://hackmd.io/v7YlldR8QcypAO2wcu1syg)| |Hank|[CodePen](https://codepen.io/tw1720/pen/OJGqjpR)| |william威良|[CodePen](https://codepen.io/snowman12320/pen/yLrWPed?editors=1010)| | 2魚 | [CodePen](https://codepen.io/ijrekmsn-the-sans/pen/QWPXLVr) | | 瑀君 | [HackMD](https://hackmd.io/_uploads/H1cuwzWfC.png)| |Mei|[CodePen](https://codepen.io/l_umei/pen/OJGeXLO)| |Benson|[CodePen](https://codepen.io/nosneb83/pen/bGJPWZa)| | albertyang3576 |[CodePen](https://codepen.io/albertyang3576/pen/zYXVbxV)| | runweiting |[CodePen](https://codepen.io/weiting14/pen/dyLxNdO)| | Fabio20 | [CodePen](https://codepen.io/fabio7621/pen/XWwroGN) |