一个简单的blog系统(十) 增加pv统计和留言统计

1. 现在我们来给每篇文章增加pv统计和留言统计功能。

  假设:在主页、用户也和文章页均可以显示pv统计和留言统计

首先,打开post.js,修改代码如下所示:

//要存入数据库的文档
    var post = {
        name: this.name,
        time: time,
        title: this.title,
        post: this.post,
        tags: this.tags,
        comments: [],
        pv: 0
    };

然后,修改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);
                }
                if (doc) {
                  //每访问 1 次,pv 值增加 1
                      collection.update({
                        "name": name,
                        "time.day": day,
                        "title": title
                      }, {
                        $inc: {"pv": 1}
                      }, function (err) {
                        mongodb.close();
                        if (err) {
                              return callback(err);
                        }
                      });
                      //解析 markdown 为 html
                    doc.post = markdown.toHTML(doc.post);
                    doc.comments.forEach(function (comment) {
                    comment.content = markdown.toHTML(comment.content);
                    });
                    callback(null, doc);//返回查询的一篇文章
                }
              });
        });
      });
};

最后,修改index.ejs、user.ejs、article.ejs,在<p><%- post.post %>后面修改

<span class=‘glyphicon glyphicon-comment‘ style="padding:0 10px;">评论:<%= post.comments.length %></span>
<span class="glyphicon glyphicon-share-alt">阅读:<%= post.pv %></span>

至此,我们就给博客增加了pv统计和留言统计。

如下代码:

时间: 2024-10-19 03:31:49

一个简单的blog系统(十) 增加pv统计和留言统计的相关文章

Node.js 博客实例(十)pv统计和留言统计

原教程 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, comm

一个简单的blog系统(十四) 增加用户头像

1.现在我们来给博客添加用户头像. 假定:注册的用户根据注册时的邮箱湖区gravatar头像,未注册的用户则根据留言填的邮箱获取gravatar头像,在主页和用户也的文章标题的右侧显示作者的头像,在文章页面留言人的头像显示在留言板的右侧. 1.1 添加已经注册用户头像 我们已经引入了crypto加密模块,之前已经引用,这边就可以直接使用,首先,打开user.js,我们添加一行代码: var crypto = require('crypto'); 然后,我们将User.prototype.save

一个简单的blog系统(三) 增加文件上传功能

1. 一个完整的博客怎么能缺少图片呢,目前上传文件的方法有三种: (1)使用Express自带的文件上传功能,不涉及数据库. (2)使用Formidable外部模块,不涉及数据库. (3)上传到MongoDB,涉及到数据库. 可以看出,第一种方式最简单,Express通过bodyParser()解析请求体,因此我们可以使用bodyParser()来实现文件的上传功能. 2.实现过程 2.1 首先打开header.ejs,在<li><a href="/post" tit

一个简单的blog系统(四) 实现用户页面和文章页面

1.现在我们来给博客添加用户页面和文章页面. 1.1 所谓用户页面就是当单击某个用户名链接时,跳转到:域名/u/用户名,并且跳出该用户的所有文章.同样,文章页面就是当单击某篇文章标题时,跳转到:域名/u/用户名/事件/文件名,进入到该文章的页面(也许还有该文章的评论等) 首先,我们先打开post.js,将Post.get修改为Post.getAll, 同时将index.js中的Post.get修改为Post.getAll.在post.js最后添加如下代码: 1 //获取一篇文章,根据用户名,发表

Django学习小组出品:一起来做一个简单的Blog第一周文档(教程)

本节是 django blog 项目的开篇,是 django 学习小组的集体学习成果.django学习小组是由我发起的一个促进 django 新手互相学习.互相帮助的组织.小组在一边学习 django 的同时将一起完成三个项目: 一个简单django blog,用于发布小组每周的学习和开发文档 django中国社区,为国内的 django 开发者们提供一个长期维护的 django 社区,聚集全国的 django 开发者到这个社区上来 django 问答社区, 类似于segmentfault 和

20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 进程上下文的切换 第一讲  Linux内核源代码介绍 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一般都基于此目录. init目录包含核心的初始化代码(不是系统的引导代

《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE(2.29——3.6)构造一个简单的Linux系统MenuOS SECTION 1 Linux内核源代码简介 1.操作系统的两把宝剑(回顾上一讲) 中断上下文的切换——保存现场&恢复现场 进程上下文的切换 2.Linux内核源代码简介 打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题. 因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux

Linux内核分析 笔记三 构造一个简单的Linux系统MenuOS ——by王玥

一.知识点总结 (一)Linux源代码简介 arch/x86目录下的代码是我们重点关注的 内核启动相关代码都在init目录下 start_kernel函数相当于普通C程序的main函数 linux的核心代码都在kernel目录中 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相关代码 kenerl/ 进程调度相关代码 ipc/ 进程间通信 lib/ 公共库文件 mm/ 内存管理相关的代码 (二)构造一个简单的Linux系统 启动MenuOS系统