使用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); }); }); }); };
hi,我的新博客地址:ysha.me !!