最近在用所學知識寫自己的博客系統,想要實現一個獲取文章列表的分頁功能,大概是如下效果:
第一次用nodejs寫分頁查詢功能,記錄一下過程
前端代碼:
async getArticleList (index) { let res = await this.$http.post('/article/getArticleList',{page: index, pageSize: this.pageSize}) console.log(res) if(res.data.result === 0) { let data = res.data this.count = data.total this.articlelist = data.artcleList }else { return this.$Message.error(res.data.error_info) } }
服務端代碼:
// 獲取文章列表 router.post('/getArticleList', function ( req, res) { let page = req.body.page let limit = req.body.pageSize || 5 Article.find({},function (err, data) { if(err) return res.status(500).json({ result: 1, error_info: '請求失敗!' }) let count = data.length console.log(count) Article.find({}).skip((page - 1)*parseInt(limit)).limit(parseInt(limit)).exec(function (err, data) { if(err) return res.status(500).json({ result: 1, error_info: '服務器繁忙,請稍后重試!' }) return res.status(200).json({ result:0, message:'請求成功', total: count, artcleList: data }) }) }) })
page和limit是由前端傳過來的,通過req.body來獲取,因為是要給前端傳所有的數據條數,所以就需要將所有數據都查詢出來,通過data.length取出長度.。
skip表示跳過前N個查詢結果,返回從N+1個開始的limit個數據,比如,一頁5條數據,現在要查詢第3頁數據,就跳過前兩頁的10條數據,返回從第三頁開始的5條數據。
exec表示計算由前面查詢條件返回的結果。
推薦文章: