Node.js、express、mongodb 實現分頁查詢、條件搜索


前言

     在上一篇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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM