发表文章

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. tomcat启动项目被重新加载,导致资源初始化两遍

    之前没有遇到过这个问题,配了三天的项目了,惊人啊!!!各种怪问题全被我赶上了.真有种骂人的冲动. tomcat启动项目时,项目资源被加载两遍. 原因:配置虚拟目录导致,项目被重新加载. <Hos ...

  2. 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中

    下面是自己编写的 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中 (以防忘记) 原创哟 import java.io.BufferedReader;import java.io.Buffe ...

  3. 【C/C++】malloc()

    <math.h>文件中对malloc()函数原型: _CRTIMP void *  __cdecl malloc(size_t); MSDN中对malloc()的解释: malloc re ...

  4. Chapter3——进入Android Dalvik虚拟机(二)

    Dalvik汇编语言基础 Dalvik虚拟机为自己设计了一套指令集,并制定了自己的指令格式和调用规范. 位描述约定如下: 每16位的字采用空格分隔开来 每个字母表示4位,每个字母按顺序从高字节开始,排 ...

  5. BZOJ_1671_[Usaco2005 Dec]Knights of Ni 骑士_BFS

    Description Bessie is in Camelot and has encountered a sticky situation: she needs to pass through t ...

  6. codevs 3012 线段覆盖4

    传送门 3012 线段覆盖 4  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 黄金 Gold   题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐 ...

  7. MongoDB安装及多实例启动

    MongoDB安装及多实例启动 MongoDB简介 MongoDB是一款跨平台.面向文档的数据库.可以实现高性能.高可用性,并且能够轻松扩展,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下 ...

  8. Dynamic Gcd

    树链剖分+差分 直接区间加显然是不行的,由于gcd(a,b,c)=gcd(a,a-b,b-c),那么我们对这些数差分,然后就变成单点修改.原本以为这道题很简单,没想到这么麻烦,就膜了发代码. 首先我们 ...

  9. Jacob开发文件转PDF

    这三种方法我都有试过word转PDF,第2种.第3种对于图片,表格.中文转换效果都不好,方法1效果最好.但方法1 只支持Windows环境下. 1.开发环境 Windows系统: 2.准备工作: st ...

  10. SQL Server知识详解

    1.SET NOCOUNT ON的作用: 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息. 语法:SET NOCOUNT {ON | OFF} 详解:当SET ONCOUNT ...