使用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);
});
});
});
};
使用express+mongoDB搭建多人博客 学习(6)发表文章的更多相关文章
- 使用express+mongoDB搭建多人博客 学习(3)connect-flash和mongodb,表单注册
1.根目录下新建settings.js,存放数据库配置 module.exports={ cookieSecret:"myblog", db:"blog", h ...
- 使用express+mongoDB搭建多人博客 学习(5)权限控制
修改index.js如下: var express = require('express'); var router = express.Router(); var crypto=require('c ...
- 使用express+mongoDB搭建多人博客 学习(2)路由与模板
修改index.js路由规则: var express = require('express'); var router = express.Router(); /* GET home page. * ...
- 使用express+mongoDB搭建多人博客 学习(1) 安装blog工程
一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -e ...
- 使用express+mongoDB搭建多人博客 学习(4)登录与登出
登录 修改index.ejs <%- include header %> <% if(locals.error){ %> <span><%= locals.e ...
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...
- 2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客
序,Node是基于V8引擎的服务器端脚本语言. 基础准备 Node.js: Express:本文用的是3.21.2版本,目前最新版本为4.13.3,Express4和Express3还是有较大区别,可 ...
- 第1章 Express MongoDB 搭建多人博客
学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...
- 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统
很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...
随机推荐
- Ansible 动态获取主机列表
参考文献: http://www.linuxidc.com/Linux/2016-12/138111.htm 附加 这个 include_vars 变量,可以 动态分别环境或者其他条件- hosts: ...
- Dom4J 解析xml ,类查询
/** * 从XML文件比对,传入provinceId 返回 provinceShortName * @param provinceid * @return */ public static Stri ...
- javascript之闭包,递归,深拷贝
闭包 理解:a函数执行后return出b函数且b函数可以访问a函数的数据 好处:子函数存储在复函数内部,子函数执行完不会被自动销毁 坏处:占用内存比较大 ex: function bibao(){ v ...
- JavaScript 日期处理类库 moment
可以自定义自己需要的时间格式,中文文档如下: http://momentjs.cn/ http://momentjs.cn/docs/
- P1115最大子段和
题目:https://www.luogu.org/problemnew/show/P1115 很简明的一道题: 这里用了递归分治,然而似乎还有更简单的做法(贪心). 代码如下: #include< ...
- PhpStorm中如何配置SVN,详细操作方法
1.简介: PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速导航以及即时错误检查等功能大大提高了编码效率.它是一款商业的 PHP 集成开发工具,以其独特的开发便利性,短时 ...
- zabbix snmp、jmx配置使用
SNMP: snmp是很古老的监控,我萌几乎可以在所有设备上看到它的身影 [root@linux-node1 ~]# yum install net-snmp net-snmp-libs net-sn ...
- CS231n 2016 通关 第五、六章 Fully-Connected Neural Nets 作业
要求:实现任意层数的NN. 每一层结构包含: 1.前向传播和反向传播函数:2.每一层计算的相关数值 cell 1 依旧是显示的初始设置 # As usual, a bit of setup impor ...
- js搜索相同类型的控件全选、取值(Checkbox)
function selectAll(obj) { if (obj.checked) { $("input[type='checkbox']").each(function () ...
- 菜鸟-@responsebody 理解-用法
@responsebody表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@respo ...