使用express+mongoDB搭建多人博客 学习(6)发表文章

发表文章

1、在modules文件夹下新建post.js

var mongodb=require("./db");

function Post(name,title,post){
    this.name=name;
    this.title=title;
    this.post=post;
}

module.exports=Post;

Post.prototype.save=function(callback){
    var date=new Date();
    var time={
        date:date,
        year:date.getFullYear(),
        month:date.getFullYear()+"-"+(date.getMonth()+1),
        day:date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate(),
        minute:date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+(date.getMinutes()<0?'0'+date.getMinutes():date.getMinutes())
    };

    var post={
        name:this.name,
        time:time,
        title:this.title,
        post:this.post
    };

    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }

        db.collection("posts",function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            collection.insert(post,{safe:true},function(err){
                mongodb.close();
                if(err){
                    return callback(err);
                }
                callback(null);
            });
        });
    });
};


Post.get=function(name,callback){
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        db.collection("posts",function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            var query={};
            if(name){
                query.name=name;
            }
            collection.find(query).sort({time:-1}).toArray(function(err,docs){
                mongodb.close();
                if(err){
                    return callback(err);
                }
                callback(null,docs);
            });
        });
    });
};

2、修改index.js代码:

2.1 引入post.js

var express = require('express');
var router = express.Router();
var crypto=require('crypto');
var User=require("../models/user.js");
var Post=require("../models/post.js");

2.2 

router.get('/', function(req, res, next) {
    Post.get(null,function(err,posts){
        if(err){
            posts=[];
        }
          res.render('index', { 
              title: '主页',error:req.flash("error").toString(),
              success:req.flash("success").toString(),
              user:req.session.user,
              posts:posts
          });
    });
});
router.get('/post',checkLogin);
router.get('/post',function(req,res,next){
  res.render('post', { 
      title: '发表',error:req.flash("error").toString(),
      success:req.flash("success").toString(),
      user:req.session.user 
  });
});

3、修改index.ejs

<%- include header %>
<% posts.forEach(function(post,index){ %>
<p><h2><a href="#"><%=post.title %></a></h2></p>
<p class="info">
    作者:<a href="#"><%=post.name %></a> | 
    日期:<%= post.time.minute %>
</p> 
<p><%- post.post %></p> <% }) %>
<%- include footer%>

使用markdown

1 npm install markdown

2 修改post.js

var mongodb=require("./db");
markdown=require('markdown').markdown;
Post.get=function(name,callback){
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        db.collection("posts",function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            var query={};
            if(name){
                query.name=name;
            }
            collection.find(query).sort({time:-1}).toArray(function(err,docs){
                mongodb.close();
                if(err){
                    return callback(err);
                }
                //使用markdown
                docs.forEach(function(doc){
                    doc.post=markdown.toHTML(doc.post);
                });
                callback(null,docs);
            });
        });
    });
};

 

posted on 2015-02-10 16:24  叫我钱了个浅  阅读(226)  评论(0编辑  收藏  举报

导航