一,后台路由文件 /router/main.js

var express = require('express')
var router = express.Router()
var Category = require('../models/Category')
var Content = require('../models/Content')
/**
* 首页
*/
router.get('/',(req,res,next)=>{
/**
* 从数据库中读取分类信息
* rs是一个数组类型的记录
*/
var data = {
userInfo:req.userInfo,
categories:[], //所有分类的信息
page : Number(req.query.page || 1),
limit : 2,
pages : 1,
count: 0
}
/**获取所有分类信息 */
Category.find().then((categories)=>{
data.categories = categories
 
/**读取内容的总记录数 */
return Content.countDocuments()
}).then((count)=>{
//为了方便,存入data
data.count = count
// 计算总页数,向上取整数,去最大值
data.pages = Math.ceil(data.count / data.limit)
 
// 页数取值不能超过总页数的值
data.page = Math.min(data.page,data.pages)
 
// 取值不能小于1
data.page = Math.max(data.page,1)
// 不需要被分配到模板 data 中 ,直接存入变量
var skip = (data.page-1)*data.limit
/**
* 读取文章并返回
*/
return Content.find().sort({_id:-1}).limit(data.limit).skip(skip).populate(['category','user'])
// console.log(123) 【调试】
// 不 return 下面的参数将没有数据
}).then((contents)=>{
data.contents = contents
console.log(data)
/**最后渲染 */
res.render('main/index',data)
})
 
})
 
module.exports = router
 
 
二,前台展示文件  /views/index.html
 
<div class="panel panel-primary">
<div class="panel-heading">文 章</div>
{% for content in contents %}
<div class="panel-body">
<div class="panel panel-info">
<div class="panel-body">
<h4>【 {{content.title}} 】</h4>
<p>
作者 : {{content.user.username}} &nbsp;
发布时间 : {{content.addTime|date('Y-m-d')}} &nbsp;
阅读数量 : {{content.views}} &nbsp;
</p>
<p>{{content.content}}</p>
<p>
<h5>评论 :</h5>
</p>
</div>
</div>
</div>
{% endfor %}
<nav aria-label="...">
<ul class="pager">
( <li>共 {{count}} 条数据</li> ,
<li>共 {{pages}} 页</li> ,
<li>当前是在 {{page}} 页</li> ) &nbsp;&nbsp;&nbsp;
<li><a href="/?page=1">首页</a></li>
{% if page<=1 %}
<li><a href="/?page={{page+1}}">下一页</a></li>
 
{% else %}
{% if page>=pages %}
<li><a href="/?page={{page-1}}">上一页</a></li>&nbsp;&nbsp;
{% else %}
<li><a href="/?page={{page-1}}">上一页</a></li>
<li><a href="/?page={{page+1}}">下一页</a></li>
{% endif %}
{% endif %}
<li><a href="/?page={{pages}}">尾页</a></li>
</ul>
</nav>
</div>

20 ~ express ~ 前台内容分页展示的更多相关文章

  1. 21 ~ express ~ 前台内容分类展示

    一,前台 , views/main/index.html ,通过get传送给后台 思路 : 将栏目ID 传递给后台,后台根据 栏目的ID 返回相应的数据   {% if category == '' ...

  2. 18 ~ express ~ 前台分类导航展示 与 排序

    一,前台分类导航展示 1,后台文件:  /router/main.js router.get('/',(req,res,next)=>{ /** * 从数据库中读取分类信息 * rs是一个数组类 ...

  3. express + jqPaginator 分页展示内容

    写在前面的话 分页展示内容也是我们在页面开发中经常会遇到的需求 前端页面利用jqPaginator这个jquery插件来编写 后端利用mysql存储数据 开始敲代码 回顾sql知识 首先让我们回顾一下 ...

  4. Java Web中将oracle的数据库内容以表格形式展现到页面中(分页展示)

    分页SQL语句: ----分页显示 select * from (select rownum as r,t.* from () ; 查询的结果如下: 这个SQL,使用了三层嵌套的查询方式: 1)最内层 ...

  5. Decoration4:分页展示

    现在我们实现前台List的分页展示,这也是最基本的要求 先看现在的Rest数据格式,在spring的默认返回中,分页用到的元素都已经在page节点中返回了,只要在前台合理利用就足够了 { " ...

  6. Django学习(5)优雅地分页展示网页

    在我们平时浏览网页时,经常会遇到网页里条目很多的情形,这时就会用到分页展示的功能.那么,在Django中,是如何实现网页分类的功能的呢?答案是Paginator类. 本次分享讲具体展示如何利用Djan ...

  7. php数组内容分页的例子(转)

    php数组内容分页代码 时间:2016-03-04 23:46:34来源:网络 导读:php数组内容分页代码,当前页如果大于总页数,当前页为最后一页,分页显示时,应该从多少条信息开始读取数据.   p ...

  8. C#-WebForm-组合查询(Queryable延迟查询、Intersect交集)、分页展示基础

    组合查询: 方法一:Queryable<> 延迟查询 其特点是:读到词句代码时不会立即执行,而是在进行数据绑定时执行 优点:此期间可以进行添加查询条件,以减少数据库查询内容,来减少内存占用 ...

  9. MySQL+Service+Servlet+Jsp实现Table表格分页展示数据

    下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...

随机推荐

  1. Calendar 时间类的应用

    Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处 ...

  2. 使用Hibernate+MySql+native SQL的BUG,以及解决办法

      本来是mssql+hibernate+native SQL 应用的很和谐 但是到了把mssql换成mysql,就出了错(同样的数据结构和数据). 查询方法是: String sql = " ...

  3. Java设计模式之Iterator模式

    分类: [java]2013-07-15 10:58 917人阅读 评论(0) 收藏 举报 所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式.本文以java中的容器为例 ...

  4. L1-046. 整除光棍(模拟除法)

    题意: 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,111111就可以被13整除. 现在, ...

  5. MapReduce会自动忽略文件夹下的.开头的文件

    MapReduce会自动忽略文件夹下的.开头的文件,跳过这些文件的处理.

  6. RIOT笔记

    RIOT笔记 2016-04-25 [资源] 维基 https://github.com/RIOT-OS/RIOT/wiki 代码 https://github.com/RIOT-OS/RIOT 网页 ...

  7. PowerShell的一些资料整理

    年后准备把一些公司的一些祖传脚本给重新弄下,之前的脚本是bat写的,又臭又长,这次就不准备补窟窿了.打算用powershell重写下,这里就整理了一些相关的技术资料. 入门教程: 入门教程可以首选国内 ...

  8. MQ的调用

    mq调用(相关dll) using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Collecti ...

  9. c# copydata 消息

    using PublicCode; using System; using System.Collections.Generic; using System.ComponentModel; using ...

  10. 安卓fragment transaction add方法报错

    这个问题百度了很多能用的很少! 原来看的B站的视频教程比较老了参数不匹配!我记一下安卓studio3.1的方法 切换fragment 前都先要 FragmentManager manager=getS ...