博客管理与文章发布系统-第三方模块及其用法Part3

退出登陆还忘记写了

module.exports = (req, res) => {
    req.session.destroy(function() {
        //清除模板中的用户信息
        req.app.locals.userInfo = null;
        res.clearCookie('connect.sid');
        res.redirect('/admin/login');
    });
};

提交表单时文件预览图的写法(这里file是文件上传表单,preview是预留的图片位置):

            var file = document.querySelector('#file');
            var preview = document.querySelector('#preview');
            file.onchange = function () {
                var reader = new FileReader();
                //用户选择的文件列表
                reader.readAsDataURL(this.files[0]);
                //监听onload事件
                reader.onload = function() {
                    preview.src = reader.result;
                }
            }       

 

1.查询数据分页

//导入mongoose-sex-page模块
const pagination = require('mongoose-sex-page');
    //接收客户端传递过来的页码
    const page = req.query.page;
    req.app.locals.currentLink = 'article';
    // 多集合联合查询,将author变成一个对象里面存储着id所属对象的信息
    // page 指定当前页
    // size 指定每页显示的数据条数
    // display 指定客户端要显示的页码的数量
    //exec发送查询请求
    let articles = await pagination(Article).find({}).page(page).size(2).display(2).populate('author').exec();

 

原来的分页方法:

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

    let start = (page - 1) * pagesize;

    //limit限制查询结果的数量,skip跳过多少条数据
    // 模板中的相对路径是相对于地址栏中的请求路径的
    let users = await User.find({}).limit(pagesize).skip(start);
    res.render('admin/user', {
        users: users,
        page: parseInt(page),
        total: total
    });

 

posted @ 2020-05-24 08:13  Dokom  阅读(236)  评论(0编辑  收藏  举报