博客项目实战6 数据分页

const { User } = require('../../model/user');
const user = require('../../model/user');
module.exports = async(req, res) => {

    let page = req.query.page || 1;
    // ,每页显示的数据条数
    let pagesize = 1;
    //查询总数
    let count = await User.countDocuments({});
    // 总页数
    let total = Math.ceil(count / pagesize);

    // 页码对应的数据查询开始位置
    let start = (page - 1) * pagesize;

    // console.log(count); 
    let users = await User.find({}).limit(pagesize).skip(start);
    // // 渲染页面
    res.render('admin/user', {
        users: users
    });
};
 
 
 {{extend './common/layout.html'}} {{block 'main'}} {{include './common/header.html'}}
<!-- 主体内容 -->
<div class="content">

    {{include './common/aside.html'}}

    <div class="main">
        <!-- 分类标题 -->
        <div class="title">
            <h4>用户</h4>
            <span>找到1个用户</span>
            <a href="/admin/user-edit" class="btn btn-primary new">新增用户</a>
        </div>
        <!-- /分类标题 -->
        <!-- 内容列表 -->
        <table class="table table-striped table-bordered table-hover custom-table">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>用户名</th>
                    <th>邮箱</th>
                    <th>角色</th>
                    <th>状态</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                {{ each users}}
                <tr>
                    <td>{{@$value._id}}</td>
                    <td>{{$value.username}}</td>
                    <td>{{$value.email}}</td>
                    <td>{{$value.role == 'admin' ? '超级管理员' : '普通用户'}}</td>
                    <td>{{$value.state == 0 ? '启用' : '禁用'}}</td>
                    <td>
                        <a href="user-edit.html" class="glyphicon glyphicon-edit"></a>
                        <i class="glyphicon glyphicon-remove" data-toggle="modal" data-target=".confirm-modal"></i>
                    </td>
                </tr>
                {{/each}}

            </tbody>
        </table>
        <!-- /内容列表 -->
        <!-- 分页 -->
        <ul class="pagination">
            <li>
                <a href="/admin/user?page=<%= page-1 < 1  ? 1 : page-1 %>">
                    <span>&laquo;</span>
                </a>
            </li>

            <% for (var i = 1; i <= total; i++) { %>
                <li><a href="/admin/user?page=<%=i%>">{{i}}</a></li>

                <% } %>
                    <li style="display:  <%= page-0+1 > total ? 'none' : 'inline-block' %>">
                        <a href="/admin/user?page=<%=page-0+1%>">
                            <span>&raquo;</span>
                        </a>
                    </li>
        </ul>
        <!-- /分页 -->
    </div>
</div>
<!-- /主体内容 -->
<!-- 删除确认弹出框 -->
<div class="modal fade confirm-modal">
    <div class="modal-dialog modal-lg">
        <form class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
                <h4 class="modal-title">请确认</h4>
            </div>
            <div class="modal-body">
                <p>您确定要删除这个用户吗?</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                <input type="submit" class="btn btn-primary">
            </div>
        </form>
    </div>
</div>
{{/block}}
原文地址:https://www.cnblogs.com/ericblog1992/p/13110147.html