[Node.js][006화] 아카이브 페이지 추가

2566 단어 node.js
이제 블로그에 아카이브 기능을 추가하여 아카이브 페이지에 들어갈 때 연도와 날짜의 순서에 따라 모든 글을 열거합니다.
우선, 우리는 홈페이지 왼쪽 내비게이션에 압축 파일 페이지 (archive) 의 링크를 추가하고 헤더를 수정합니다.ejs, <span><a title=" " href="/">home</a></span> 아래에 코드 줄을 추가합니다.
<span><a title="  " href="/archive">archive</a></span>

다음은 index에 있습니다.js에/archive의 루트 규칙을 추가합니다.app.get('/u/:name') 전에 다음 코드를 추가합니다.
app.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()
    });
  });
});

post 수정js, 다음 코드를 추가합니다.
Post.getArchive = function(callback) {//      
  mongodb.open(function (err, db) {
    if (err) {
      return callback(err);
    }
    db.collection('posts', function(err, collection) {
      if (err) {
        mongodb.close();
        return callback(err);
      }
      //      name、time、title         
      collection.find({},{"name":1,"time":1,"title":1}).sort({
        time:-1
      }).toArray(function(err, docs){
        mongodb.close();
        if (err) {
          callback(err, null);
        }
        callback(null, docs);
      });
    });
  });
};

views 폴더 아래에 새로운archive.ejs, 다음 코드를 추가합니다.
<%- include header %>
<ul class="archive">
<% var lastYear=0 %>
<% posts.forEach(function(post, index){ %>
  <% if(lastYear!=post.time.year){ %>
    <li><h3><%= post.time.year %></h3></li>
  <% lastYear=post.time.year } %>
    <li><time><%= post.time.day %></time></li>
    <li><a href="/u/<%= post.name %>/<%= post.time.day %>/<%= post.title %>"><%= post.title %></a></li>
<% }) %>
</ul>
<%- include footer %>

여기에서 우리는 lastYear를 통해 지난번에 표시된 연도와 같은지 여부를 판단합니다. 같으면 다시 표시하지 않고, 다르면 표시합니다.
마지막으로header에서.ejs에 다음 스타일이 추가됩니다.
.archive{list-style:none;line-height:28px;}
.archive h3{margin:0.5em 0;}
.archive time{float:left;font-size:14px;color:#999999;margin-right:1.2em;}

현재, 우리는 문장의 압축 파일 페이지를 추가했다.

좋은 웹페이지 즐겨찾기