NodeJS博客实战20_博客添加阅读量,作者和创建时间扩展

版权声明:在那最初的相遇中,我们都曾经为彼此心动过... https://blog.csdn.net/weixin_36185028/article/details/79945508

源码地址:https://github.com/RidingACodeToStray/Nodejs_blog

1.主要功能

1)添加创建者字段

2)添加创建时间

3)添加阅读量字段

2.实现方法

1)在创建content表结构中关联User表的字段,在读取内容列表时使用populate方法也把对应的创建者信息读取到

2)在content表结构中添加时间字段,默认时间函数new Date(),使用模板引擎的过滤器date()方法将从内容中读取的时间字段转化为东八区的格式化后的时间

3.相关代码

1)content表结构

schemas/content.js

//定义数据库表存储结构

//引入moogoose模块操作数据库
var mongoose = require('mongoose');

//定义用户表结构(字段和类型),并暴露出去
module.exports = new mongoose.Schema({
	//关联字段 - 分类的id
	category:{
		type:mongoose.Schema.Types.ObjectId,
		//引用
		ref:'Category'
	},

	title:String,
	//关联字段 - 用户id
	user:{
		type:mongoose.Schema.Types.ObjectId,
		//引用
		ref:'User'
	},
	//点击量
	views: {
		type:Number,
		default:0
	},
	addTime:{
		type:Date,
		default:new Date()
	},
	//简介
	desciption:{
		type:String,
		default: ''
	},
	//内容
	content: {
		type:String,
		default:''
	}
});

2)读取内容关联user表

routers/admin.js

//内容首页
router.get('/content',function(req,res){
	//limit()限制获取的用户条数
	//skip()忽略数据的查询
	var page = Number(req.query.page) || 1;
	var limit = 2;
	var pages = 0;
	Content.count().then(function(count){
		//计算总页数向上取整
		pages = Math.ceil(count / limit);
		//page取值不能超过pages,去总页数和page中的最小值
		page = Math.min(page,pages);
		//page取值不能小于1
		page = Math.max(page,1);
		var skip = (page -1 ) * limit;
		//从数据中读取所有的用户数据
		//sort排序1表示升序-1表示降序
		//populate关联category的信息
		Content.find().sort({_id:-1}).limit(limit).skip(skip).populate(['category','user']).then(function(contents){
			// console.log(contents);
			res.render('admin/content_index',{
				userInfo:req.userInfo,
				contents:contents,
				page:page,
				count:count,
				pages:pages,
				limit:limit
			});
		});	
	})
})

3)模板渲染

views/admin/content_index.html

{% extends 'layout.html' %}

{% block main %}
	<div class="a-userNav">
		<span><a href="/">管理首页</a></span>
		<span> / </span>
		<span>分类列表</span>
	</div>
	<div style="padding-left: 50px;text-align: right;margin-right: 10px;">
		<a href="/admin/content/add">添加内容</a>
		</div>
	<table class="a-userTable">
	<thead>
		<tr>
			<th>ID</th>
			<th>内容分类</th>
			<th>内容标题</th>
			<th>作者</th>
			<th>创建时间</th>
			<th>阅读量</th>
			<th>操作</th>
		</tr>
	</thead>
	<tbody>
		{% for content in contents %}
		<tr>
			<td>{{content._id.toString()}}</td>
			<td>{{content.category.name}}</td>
			<td>{{content.title}}</td>
			<td>{{content.user.username}}</td>
			<td>{{content.addTime|date('Y-m-d H:i:s',-8*60)}}</td>
			<td>{{content.views}}</td>
			<td>
					<a href="/admin/content/edit?id={{content._id.toString()}}">修改</a>
					<a href="/admin/content/delete?id={{content._id.toString()}}">删除</a>
			</td>
		</tr>
		{% endfor %}
	</tbody>
	</table>
		<div class="a-page">
		<span><a href="/admin/content?page={{page-1}}">上一页</a></span>
		<span class="a-pageInfo">
			当前第{{page}}页,每页{{limit}}条,共{{pages}}页{{count}}条数据
		</span>
		<span><a href="/admin/content?page={{page+1}}">下一页</a></span>
	</div>
{% endblock %}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页