博客管理与文章发布系统-第三方模块及其用法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 });