zoukankan      html  css  js  c++  java
  • 一个简单的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统计和留言统计。

    如下代码:

  • 相关阅读:
    文本框textarea根据输入内容自适应高度 和输入中文和数字换行解决方法
    switch 和 if...else if 的区别
    vue中 eCharts 自适应容器
    AJAX跨域POST发送json时,会先发送一个OPTIONS预请求
    获取鼠标和元素的坐标点
    vue2 数据交互 vue-resource
    网站代码初始化
    vue2 关于ref
    事件监听
    cookie 的 写入,读取, 删除
  • 原文地址:https://www.cnblogs.com/yuity/p/5304137.html
Copyright © 2011-2022 走看看