Node写博客--内容详情页

1.在main.js中增加路由,并修改如下

var express = require('express');
var router =express.Router();

var Category=require('../models/Category');//引入分类信息
var Content = require('../models/Content');

var data;
//处理通用的数据
router.use(function (req,res,next) {
    data={
        userInfo:req.userInfo,
        catagories:[]
    }
    Category.find().then(function (categories) {
        data.categories=categories;
        next();
    });
});

/*
* 首页
* */
router.get('/',function(req,res,next) {
//一步用来获取分类,第二步用来获取种类和获取条数,以及后面的具体的内容列表
    data.category=[];
    data.count=0;
    data.category=req.query.category||'';//前台内容分类的展示,获取信息
    data.page=Number(req.query.page||1);
    data.limit=10;
    data.pages=0;
    data.contents=[];

    var where ={};
    if(data.category){
        where.category=data.category
    }
    Content.where(where).count().then(function (count) {

        data.count=count;

        //计算总页数
        data.pages=Math.ceil(data.count/data.limit);//向上取整
        //取值不能超过pages
        data.page=Math.min(data.page,data.pages);
        //取值不能小于1
        data.page=Math.max(data.page,1);

        var skip = (data.page-1)*data.limit;

        //增加一个查询条件
        return Content.find().where(where).sort({_id:-1}).limit(data.limit).skip(skip).populate(['category','user']).sort({
            addTime:-1
        });
    }).then(function (contents) {
        data.contents=contents;
        res.render('main/index',data);//渲染当前views下面的index.html页面
    })
});

router.get('/view',function (req,res) {
    var contenId=req.query.contentid||'';

    Content.findOne({
        _id:contenId
    }).then(function (content) {
        data.content=content;
        res.render('main/view',data);
    });
});
module.exports = router;

2.在main文件夹中增加一个模板页面layout.html,并修改index.html页面,和增加view.html

{%extends 'layout.html'%}

{%block content%}
<div class="listBox">
    <h1>{{content.title}}</h1>
    <p class="colDefault">
        作者:<span class="colInfo">{{content.user.username}}</span> -
        时间:<span class="colInfo">{{content.addTime|date('Y-m-d H:i:s',-(8*60))}}</span> -
        阅读:<span class="colInfo">{{content.views}}</span> -
        评论:<span class="colInfo">10</span>
    </p>
    <dfn>
        {{content.content}}
    </dfn>
</div>
{%endblock%}

3.问题:阅读数量怎么实现增加?

解决方法:每当用户访问详情页,阅读量增加1,在main.js中修改

router.get('/view',function (req,res) {
    var contenId=req.query.contentid||'';

    Content.findOne({
        _id:contenId
    }).then(function (content) {
        data.content=content;

        content.view++; //修改这里
        content.save();
        res.render('main/view',data);
    });
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值