• 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

  • 相关阅读:
    NPTL 线程同步方式
    mysql事物处理
    DHCP服务器-DNS服务器-Samba服务器
    NTP服务器
    wsgiref 源代码分析
    集群负载均衡LVS
    百万数据查询优化技巧三十则
    Shell 基本运算符
    Shell 数组
    Shell 传递参数
  • 原文地址:https://www.cnblogs.com/sword-successful/p/4953803.html
Copyright © 2020-2023  润新知