前言
在上一篇Node.js、express、mongodb 入門(基於easyui datagrid增刪改查) 的基礎上實現了分頁查詢、帶條件搜索。
實現效果
1、列表第一頁。
2、列表第二頁
3、條件搜索
分頁實現
1、分頁實現使用了Mongodb的query.skip().limit().where() 這三個方法,然后利用query.exec()。
2、我在頁面使用的是easyui datagrid,從datagrid往后台傳page和rows是用POST方式傳,我剛開始用req.params.page沒拿到數據,后使用req.body.page和req.body.rows拿到page和rows, 拿前台查詢條件一樣類似處理。
3、計算分頁條件。 從前台拿到的page默認是從1開始的,所以計算Skip的參數為(page-1)*rows。
4、往前台返回數據時不僅要返回分頁后的數據,還要返回所有數據的總數(Length), 因為easyui datagrid的數據源需要。即:
jsonArray={rows:rs,total:result.length}; res.json(jsonArray);
實現代碼
/**************************** get paged list ************************/ router.post('/index/pagelist',function(req,res){ var count=0; var page=req.body.page; var rows=req.body.rows; var stuname=req.body.username; console.log(stuname); console.log("page:"+page+",rows:"+rows); var query=student.find({}); query.skip((page-1)*rows); query.limit(rows); if(stuname){ query.where('stuname',stuname); } //計算分頁數據 query.exec(function(err,rs){ if(err){ res.send(err); }else{ //計算數據總數 student.find(function(err,result){ jsonArray={rows:rs,total:result.length}; res.json(jsonArray); }); } }); });
參考資料
1、http://www.cnblogs.com/caiya928/p/4776437.html。
2、http://www.nonb.cn/blog/nodejs-mongoose-query-chinaese.html