发表文章

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. zkdash部署

    1.拉取代码 #git clone https://github.com/ireaderlab/zkdash.git 2.安装依赖包 #cd zkdash #yum install -y python ...

  2. WPF-初始屏幕(SplashScreen)

    本主题介绍如何将启动窗口(也称为“初始屏幕”)添加到 Windows Presentation Foundation (WPF) 应用程序. 添加现有图像作为初始屏幕 创建或查找要用于初始屏幕的图像. ...

  3. 从MySQL获取数据

    安装 PM> install-package newtonsoft.json PM> install-package mysql.data string connectionString ...

  4. Flutter实战视频-移动电商-18.首页_火爆专区后台接口调试

    18.首页_火爆专区后台接口调试 楼层结束之后有个火爆专区.到地图有个上拉加载的效果 lib/config/service_url.dart 首先找到我们的接口配置文件,增加接口的配置 lib/ser ...

  5. QDUoj GZS的三角形 棋盘里的数学 思维+杨辉三角

    1. 题目 我的提交 GZS的三角形 发布时间: 2015年9月6日 15:18   最后更新: 2016年6月26日 12:10   时间限制: 1000ms   内存限制: 256M 描述 机智无 ...

  6. jquery操作select(option)的取值,设置和选中

    比如 <select class="selector"> <option value ="volvo">Volvo</option ...

  7. 进击python第4篇:初探模块

    模块,用一砣代码实现了某个功能的代码集合,任何python程序都可以作为模块导入,n个 .py 文件组成的代码集合就称为模块. but 为什么要引入模块概念?主要原因是代码重用(code reuse) ...

  8. 编译出现No rule to make target `out/host/linux-x86/bin/aapt', needed by `out/target/common/obj/APPS/MyTv4_intermediates/src/R.stamp'问题

    查找路径发现的确没有MyTv4_intermediates/src/R.stamp,这需要生成这个文件

  9. Luogu P1092 虫食算【搜索/剪枝】 By cellur925

    题目传送门 这道题是一道经久不衰的搜索题目,但是开始做的时候我没什么思路==.初始值-1 输出格式 \(naive\)想法 从右往左依次尝试填充数字,把算式当做一个3行\(n\)列的网格.(什么?你问 ...

  10. MyBais中xxMap.xml中的知识点

    添加新的mapper的时候下面两个标红的地方要注意,如果统一约定好命名的话都还好,但是就怕一会这样一会那样的业务代码:总之小心! <!-- spring与mybatis整合配置,扫描所有dao, ...