发表文章

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);
});
});
});
};

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

  1. 使用express+mongoDB搭建多人博客 学习(3)connect-flash和mongodb,表单注册

    1.根目录下新建settings.js,存放数据库配置 module.exports={ cookieSecret:"myblog", db:"blog", h ...

  2. 使用express+mongoDB搭建多人博客 学习(5)权限控制

    修改index.js如下: var express = require('express'); var router = express.Router(); var crypto=require('c ...

  3. 使用express+mongoDB搭建多人博客 学习(2)路由与模板

    修改index.js路由规则: var express = require('express'); var router = express.Router(); /* GET home page. * ...

  4. 使用express+mongoDB搭建多人博客 学习(1) 安装blog工程

    一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -e ...

  5. 使用express+mongoDB搭建多人博客 学习(4)登录与登出

    登录 修改index.ejs <%- include header %> <% if(locals.error){ %> <span><%= locals.e ...

  6. nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客

    GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...

  7. 2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客

    序,Node是基于V8引擎的服务器端脚本语言. 基础准备 Node.js: Express:本文用的是3.21.2版本,目前最新版本为4.13.3,Express4和Express3还是有较大区别,可 ...

  8. 第1章 Express MongoDB 搭建多人博客

    学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...

  9. 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统

    很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...

随机推荐

  1. js里=、== 和===有什么区别?

    说明:该文章是转载后进行修改完善的,望大家有收获. =是赋值运算符,==是关系运算符; ===是全等运算符. ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等.第一个 ...

  2. Peach+Fuzzer

    目录 1 Peach是什么....................................................................................... ...

  3. hdu 1358 Period(kmp求一个串的重复子串)

    题意:统计单串中从某个位置以前有多少重复的串 思路:kmp模板 #include<iostream> #include<stdio.h> #include<string. ...

  4. 51nod1674:区间的价值2(分治,利用&和|的收敛性)

    lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积. 例如3个数2,3,6.它们and起来的值为2,or起来的值为7,这个区间对答案的贡献为2 ...

  5. Java笔记(四)

    13. 集合框架: 集合中存储的都是对象的引用(地址) 迭代器:集合的取出元素的方式 import java.util.ArrayList; import java.util.Iterator; pu ...

  6. cordova 使用H5混合开发APP

    cordova 中文官网 http://cordova.axuer.com/docs/zh-cn/latest/

  7. 如何应用 AutoIt 修改本机的防火墙配置?(开启,关闭防火墙,添加程序信任到防火墙)

    以前,公司的实施人员配置好项目之后,不同的机器之间经常性的无法建立链接,后来发现是防火墙的设置.虽然是个小问题,但是经常性的忘记这个配置. 现在,我决定把对防火墙的设置,加入到我给实施人员的配置工具中 ...

  8. springboot开启远程调试

    远程调试maven设置 The run goal forks a process for the boot application. It is possible to specify jvm arg ...

  9. bzoj4259

    fft 搞一个生成函数 对于每位A(j)=Σi=1->m (a[i]-b[i+j])^2*a[i]*b[i+j] 如果A(j)=0说明这位匹配 如果这位是*那么a[i]=0否则等于字母-'a'+ ...

  10. Hue离线安装

    参考 https://blog.csdn.net/xuxudede1989/article/details/50359023 http://cloudera.github.io/hue/latest/ ...