Node.js 博客实例(十)pv统计和留言统计
来源:互联网 发布:后花园软件下载安装 编辑:程序博客网 时间:2024/06/07 15:18
原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第十章,由于版本等的原因,在原教程基础上稍加改动即可实现。
post.js中将var post={...}修改为(每次改动此处之后都要将e:/mongodb/blog/清空):
//要存入数据库的文档 var post = { name: this.name, time: time, title: this.title, post: this.post, tags:this.tags, comments:[], pv:0 };我们给要存储的文档添加了 pv 键并直接赋初值为 0。
继续将post.js中的Post.getOne()修改为:
//获取一篇文章Post.getOne = function(name, day, title, callback) { //打开数据库mongodb.open(function (err, db) {if (err) {return callback(err);}//读取 posts 集合db.collection('posts', function (err, collection) {if (err) {mongodb.close();return callback(err);}//根据用户名、发表日期及文章名进行查询collection.findOne({"name": name,"time.day": day,"title": title}, function (err, doc) {if (err) {mongodb.close();return callback(err);}//解析 markdown 为 htmlif (doc) {collection.update({"name":name,"time.day":day,"title":title},{$inc:{"pv":1}},function(err){mongodb.close();if(err)return callback(err);});doc.post=markdown.toHTML(doc.post);doc.comments.forEach(function (comment) {comment.content = markdown.toHTML(comment.content);});}callback(null, doc);//返回查询的一篇文章});});});};这里注意:collection.findOne({
"name": name,
"time.day": day,
"title": title
}, function (err, doc) {
if (err) {
mongodb.close();
return callback(err);
}
这里mongodb.close();一定要放到if里面,否则会报错:
throw new Error('Can\'t set headers after they are sent.');
Error: Can't set headers after they are sent.
原因是NODEJS异步机制,下面还有一个mongodb.close()会执行,两个异步同时执行就会出错;。
修改 index.ejs 、user.ejs 及 article.ejs ,在:<p><%- post.post %></p>下一行添加一行代码:
<p class="info">阅读:<%= post.pv %> | 评论:<%= post.comments.length %></p>至此,文章就有了阅读次数和评论次数的展示:
0 0
- Node.js 博客实例(十)pv统计和留言统计
- 第10章 增加pv统计和留言统计
- Node.js 博客实例(十五)转载和转载统计功能
- Node.js 博客实例(六)留言功能
- JS实现PV统计
- 统计UV和PV
- PV统计
- pv统计
- Node.js 博客实例(九)标签和标签页面
- 网站流量统计之PV和UV
- 使用rrdtool统计网站PV和IP
- 网站流量统计之PV和UV
- 网站流量统计之PV和UV
- Node.js 博客实例(十七)小结
- pv如何正确统计
- python统计pv、uv
- 统计pv uv-
- 统计网站pv数
- UVa1395&POJ3522--Slim Span【kruskal】瓶颈生成树
- 单片机,矩阵键盘扫描驱动
- LeetCode 45 Permutations
- sql 相关函数
- 白话压缩感知(含Matlab代码)
- Node.js 博客实例(十)pv统计和留言统计
- STRAIGHT_JOIN优化坑爹SQL
- Qt实例分析——C++自定义类型的属性在QML的使用
- OpenCV基础篇之绘图及RNG随机数对象
- 实现QQ聊天气泡效果
- STL之Deque的使用方法
- OpenCV基础篇之像素访问
- 【算法导论学习-24】二叉树专题2:二叉搜索树(Binary Search Tree,BST)
- tomcat 支持文件夹浏览