1. 增加存档功能,设定当进入存档页面的时候,按照年份和日期的降序列出所有的文章。
1.1 首先我们在主页左侧添加存档也(archive)的链接,修改header.ejs,添加一行代码如下所示:
<li><a href="/archive" title='存档'>存档</a></li>
1.2 然后,我们打开post.js,在后面添加如下代码:
//返回所有文章的存档信息 Post.getArchive = function(callback) { //打开数据库 mongodb.open(function(err, db) { if(err) { return callback(err); } //读取posts集合 db.collection('posts', function(err, collection) { if(err) { mongodb.close(); return callback(err); } //返回值包含name、time、title属性的文档组成为那个的存档数组 collection.find({}, { "name": 1, "title": 1, "time": 1 }).sort({ time: -1}).toArray(function(err, docs) { mongodb.close(); if(err) { return callback(err); } callback(null, docs); }); }); }); };
1.3 接下来,我们在index.js中添加/archive的路由规划,添加如下代码:
//存档页面路由 router.get('/archive', function(req, res) { Post.getArchive(function(err, posts) { if(err) { req.flash('error', err); return res.redirect('/'); } res.render('archive', { title: '存档', posts: posts, user: req.session.user, success: req.flash('success').toString(), error: req.flash('error').toString() }); }); });
1.4 最后,我们在views文件夹下面新建archive.ejs模板文件,添加如下代码:
<%- include common/header %> <div class='container'> <h2>文章存档</h2> <hr/> <ul class="list-group"> <% var lastYear = 0 %> <% posts.forEach(function (post, index) { %> <% if (lastYear != post.time.year) { %> <li class="list-group-item"><%= post.time.year %></li> <% lastYear = post.time.year } %> <li class="list-group-item list-group-item-info"><%= post.time.day %></li> <li class="list-group-item"> <span class="badge"><%= post.name %></span> <a href="/u/<%= post.name %>/<%= post.time.day %>/<%= post.title %>" style="color: purple;"><%= post.title %></a> </li> <% }) %> </ul> </div> <%- include common/footer %>
现在,我们就实现了博客的分页功能。