随着吐槽的内容越来越多,单页显示就显得不够文雅了,分页功能是一个完整系统必备的。所以就决定加上这个功能,不过分页实现起来并不容易,找了下前辈们的资料,感觉都很复杂,所以还是实现一个简单翻页好了,就是只有上一页,下一页这样简单的功能。
首先看下mongoose API,find方法源码:
Model.find = function find (conditions, fields, options, callback) {
if ('function' == typeof conditions) {
callback = conditions;
conditions = {};
fields = null;
options = null;
} else if ('function' == typeof fields) {
callback = fields;
fields = null;
options = null;
} else if ('function' == typeof options) {
callback = options;
options = null;
}
// get the raw mongodb collection object
var mq = new Query({}, options, this, this.collection);
mq.select(fields);
if (this.schema.discriminatorMapping && mq._selectedInclusively()) {
mq.select(this.schema.options.discriminatorKey);
}
return mq.find(conditions, callback);
};
其中有4个参数,find(条件,需要查询的字段,选项,回调),这样看着太抽象,来一段实际应用的代码:
/**
* huopanpan
*/
* huopanpan
*/
router.get('/admin/blogList', function(req, res) {
var user = req.session.user;
var pageIndex = 1;
var pageSize = 5;
pageIndex = req.query.pageIndex == undefined ? pageIndex
: req.query.pageIndex;
pageSize = req.query.pageSize == undefined ? pageSize : req.query.pageSize;
Blog.find({}, null, {
sort : {
'_id' : -1
},
skip : (pageIndex - 1) * pageSize,
limit : pageSize
}, function(err, docs) {
if (err)
res.send(err.message);
res.render('admin/bloglist', {
blogList : docs,
user : user,
pageIndex : pageIndex,
pageCount : docs.length
});
});
});
var user = req.session.user;
var pageIndex = 1;
var pageSize = 5;
pageIndex = req.query.pageIndex == undefined ? pageIndex
: req.query.pageIndex;
pageSize = req.query.pageSize == undefined ? pageSize : req.query.pageSize;
Blog.find({}, null, {
sort : {
'_id' : -1
},
skip : (pageIndex - 1) * pageSize,
limit : pageSize
}, function(err, docs) {
if (err)
res.send(err.message);
res.render('admin/bloglist', {
blogList : docs,
user : user,
pageIndex : pageIndex,
pageCount : docs.length
});
});
});
其中Blog.find({}, null, {sort: {'_id': -1}, skip : ( pageIndex - 1 ) * pageSize, limit : pageSize },function)
这一段第一个参数为空,意思查询所有,第二个参数null,查询所有字段,第三个参数有倒序,分页。
然后就是页面上两个翻页按钮:
/**
* huopanpan
*/
* huopanpan
*/
<ul class="pager">
<li><a href="/admin/blogList?pageIndex=<%= pageIndex==1?1:parseInt(pageIndex)-1%>&pageSize=5">← Older</a></li>
<li><a href="/admin/blogList?pageIndex=<%= pageCount<5?pageIndex:parseInt(pageIndex)+1%>&pageSize=5">Newer →<%= pageCount%></a></li>
</ul>);
<li><a href="/admin/blogList?pageIndex=<%= pageIndex==1?1:parseInt(pageIndex)-1%>&pageSize=5">← Older</a></li>
<li><a href="/admin/blogList?pageIndex=<%= pageCount<5?pageIndex:parseInt(pageIndex)+1%>&pageSize=5">Newer →<%= pageCount%></a></li>
</ul>);
相关推荐
fsf-ft-11-MERN-starter ...将MongoDB / Monoose添加到服务器 在服务器上需要猫鼬。 设置猫鼬连接 将猫鼬配置对象添加到.connect方法 { useNewUrlParser : true , useUnifiedTopology : true , useF
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
铅酸电池失效仿真comsol
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
springboot124中药实验管理系统设计与实现,含有完整的源码和报告文档
解除劳动合同协议书
快速过滤图像融合Matlab代码.rar
强调图像中内核形状(例如直线)的过滤器Matlab代码.rar
在内网linux服务器安装redis 在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
微信小程序StartKitw_xapp-startkit
座位选择微信小程序版本
机械臂代码_Mechanical_arm
图像分割测试视频river-light.mp4
前端分析-2023071100789
labview源码参考示例,可供参考学习使用
MPC跟踪轨迹圆形(以后轴为基准)
MATLAB代码:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 关键词:电动汽车 主从博弈 动态定价 智能小区 充放电优化 参考文档:《基于主从博弈的智能小区代理商定价策略及电动汽车充电管理》基本复现 仿真平台:MATLAB+CPLEX gurobi平台 优势:代码具有一定的深度和创新性,注释清晰,非烂大街的代码,非常精品 主要内容:代码主要做的是一个电动汽车充电管理和智能小区代理商动态定价的问题,将代理商和车主各自追求利益最大化建模为主从博弈,上层以代理商的充电电价作为优化变量,下层以电动汽车的充电策略作为优化变量,通过优化得出最优电价策略以及动态充电策略,代码出图效果非常好,店主已经对代码进行了深入的加工和处理,出图效果非常好,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源,联系后会直接发您资料,保证您学得会,用的起来,简直是萌新福利
springboot154基于Spring Boot智能无人仓库管理,含有完整的源码和报告文档