NodeJS博客实战14_后台管理注册用户分页原理和实现

源码地址:https://github.com/RidingACodeToStray/Nodejs_blog

主要功能点:

1)数据库的分页查询

2)前台分页传参

3)后端分页数据返回

4)页头和页尾的分页处理

实现思路:

前端点击上一页或者下一页的时候将下一页的page信息传到后台,前提是前端的page为当前页信息,因此需要后台将page返回;

后台获取前端传过来的page信息req.query.page默认page为1,现在使用数据库模型的count方法查询总条数返回前端,计算出总页数pages,并设置每页长度limit;

后端根据page信息计算出查询需要忽略的当前页前条数skip并忽略掉;

前端模板接受当前页page,总页数pages,总条数count,每页条数limit信息展示出来;

将分页代码分离成模板,便于其他页面重复利用,使用模板的include方法引入。

1.前端分页模板

在views/admin新建page.html作为分页模板,写好对应参数

	<div class="a-page">
		<span><a href="/admin/user?page={{page-1}}">上一页</a></span>
		<span class="a-pageInfo">
			当前第{{page}}页,每页{{limit}}条,共{{pages}}页{{count}}条数据
		</span>
		<span><a href="/admin/user?page={{page+1}}">下一页</a></span>
	</div>

在views/admin/user_index.html引入分页模板

{% include 'page.html' %}

2.后端数据处理

查询数据库总条数count,根据总条数计算总页数pages,验证当前页数page和当前页应忽略的条数

views/routers/admin.js

//用户管理

router.get('/user',function(req,res){
	//limit()限制获取的用户条数
	//skip()忽略数据的查询
	var page = Number(req.query.page) || 1;
	var limit = 2;
	var pages = 0;
	User.count().then(function(count){
		//计算总页数向上取整
		pages = Math.ceil(count / limit);
		//page取值不能超过pages,去总页数和page中的最小值
		page = Math.min(page,pages);
		//page取值不能小于1
		page = Math.max(page,1);
		var skip = (page -1 ) * limit;
		//从数据中读取所有的用户数据
		User.find().limit(limit).skip(skip).then(function(users){
			// console.log(users);
			res.render('admin/user_index',{
				userInfo:req.userInfo,
				users:users,
				page:page,
				count:count,
				pages:pages,
				limit:limit
			});
		});	
	})

	
})



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值