Node写博客--后台管理的注册用户数据展示和分页

1.需求:在导航条点击【用户管理】时,直接展示所有用户的信息

2.在admin.js中增加用户管理路由

var User=require('../models/User');
//增加一个用户管理路由
router.get('/user',function (req,res) {
    //
    //从数据库中读取所有的用户数据
    //
    User.find().then(function (users) {
        res.render('admin/user_index',{
            userInfo:req.userInfo,
            users:users
        })
    });

})

3.在view/admin中新增一个user_index.html页面,展示用户的信息

{%extends 'layout.html' %}
{% block main%}
<ol class="breadcrumb">
    <li><a href="/">管理首页</a></li>
    <li><span>用户列表</span></a></li>
</ol>
<h3>用户列表</h3>
<table class="table table-hover table-striped">

    <tr>
        <th>ID</th>
        <th>用户名</th>
        <th>密码</th>
        <th>是否是管理员</th>
    </tr>
    {% for user in users%}
    <tr>
        <td>{{user._id.toString()}}</td>
        <td>{{user.username}}</td>
        <td>{{user.password}}</td>
        <td>
            {%if user.isAdmin%}
            是
            {%endif%}
        </td>
    </tr>
    {% endfor %}
</table>
{% endblock %}

4.实现分页,需要借用到数据库的一个limit()操作,限制获取的数据条数,在admin.js中

//增加一个用户管理路由
router.get('/user',function (req,res) {
    //
    //从数据库中读取所有的用户数据
    //limit(Number):限制获取的数据条数
    //skip(2):忽略数据的条数
    //
    //每页显示2条,
    // 1:1-2 skip:0;->当前页1*limit
    // 2:3-4 skip:2
    //
    var page = Number(req.query.page || 1);//实际过程中需要判定page是否为数值
    //对page的取值进行一个限制
    var limit =2;
    var pages=0;
    //获取数据库中的数据记录的总条数
    User.count().then(function (count) {
        //计算总页数
        pages=Math.ceil(count/limit);//向上取整
        //取值不能超过pages
        page=Math.min(page,pages);
        //取值不能小于1
        page=Math.max(page,1);

        var skip = (page-1)*limit;

        User.find().limit(2).skip(skip).then(function (users) {
            res.render('admin/user_index',{
                userInfo:req.userInfo,
                users:users,

                count:count,
                page:page,//传递给模板,展示当前页是哪一页
                pages:pages,
                limit:limit
            })
        });
    });
});

5.在user-index.html中加入上下页动态信息

<nav>
    <ul class="pager">
        <li class="previous"><a href="/admin/user?page={{page-1}}"><span aria-hidden="true">&larr;</span> 上一页</a></li>
        <li>
            一共有 {{count}} 数据,每页显示 {{limit}} 数据,一共 {{pages}} 页,当前第 {{page}} 页
        </li>
        <li class="next"><a href="/admin/user?page={{page+1}}">下一页<span aria-hidden="true">&rarr;</span></a></li>
    </ul>
</nav>

6.我们可以将uder_index.html中的上下页动态信息封装起来,将这段代码放到一个新的page.html中

在user_index.html中包含他,可以在任何页面中引入分页page.html

【注意】必须在引用该page.html中包含count,limit,pages,page这四个数据

<!--把另外一个页面通过引用的形式,包含子集的方式包含进来-->
{%include 'page.html'%}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值