Skip to content

Commit b70fba8

Browse files
添加文章归档功能
1 parent d505631 commit b70fba8

File tree

2 files changed

+49
-21
lines changed

2 files changed

+49
-21
lines changed

README.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ blog-node 是采用了主流的前后端分离思想的,主里只讲 后端。
2525
- [x] 身份验证
2626
- [x] 项目展示
2727
- [X] 第三方 github 授权登录
28+
- [X] 文章归档
2829

2930
## 1.2 待实现功能
3031

@@ -84,12 +85,13 @@ npm start
8485
- 3. [基于 node + express + mongodb 的 blog-node 项目文档说明](http://biaochenxuying.cn/articleDetail?article_id=5bf8c57185e0f13af26e7d0d)
8586
- 4. [服务器小白的我,是如何将node+mongodb项目部署在服务器上并进行性能优化的](http://biaochenxuying.cn/articleDetail?article_id=5bfa728bb54f044b4f9da240)
8687
- 5. [github 授权登录教程与如何设计第三方授权登录的用户表](http://biaochenxuying.cn/articleDetail?article_id=5c7bd34e42b55e2ecc90976d)
88+
- 6. [一次网站的性能优化之路 -- 天下武功,唯快不破](http://biaochenxuying.cn/articleDetail?article_id=5c8ca2d3b87b8a04f1860c9a)
8789

8890

8991

9092
# 9. 参考
9193

92-
小汪是刚学的 node 技术栈,也是第一次搭建 node 后端项目,也参考了其他项目。
94+
笔者也是刚学的 node 技术栈,也是第一次搭建 node 后端项目,也参考了其他项目。
9395

9496
参考项目:
9597
[1. nodepress](https://github.com/surmon-china/nodepress)
@@ -134,19 +136,15 @@ http://127.0.0.1:3000/register
134136
本地开发时,blog-react 和 blog-node 默认启动的端口是相同的,都是 3000。
135137
**所以要先启动 blog-node 项目,再启动 blog-react 项目,而且 blog-react 的端口用另外一个打开。**
136138

137-
138-
139139
# 11. 最后
140140

141-
鉴于问问题的人有点多,小汪时间有限,处理不过来,大家可以加入 QQ 群:186045338 ,一起相互交流学习。
142-
143-
**全栈开发** 有兴趣的朋友可以扫下方二维码关注我的公众号,我会不定期更新有价值的内容。
144141

145-
关注公众号并回复 **福利** 便免费送你视频资源,绝对干货
142+
鉴于问问题的人有点多,笔者时间有限,处理不过来,大家可以加入 QQ 群:**186045338**,加群暗号:**全栈修炼** ,一起相互交流学习
146143

147-
福利详情请点击: [免费资源分享--Python、Java、Linux、Go、node、vue、react、javaScript](https://mp.weixin.qq.com/s?__biz=MzA4MDU1MDExMg==&mid=2247483711&idx=1&sn=1ffb576159805e92fc57f5f1120fce3a&chksm=9fa3c0b0a8d449a664f36f6fdd017ac7da71b6a71c90261b06b4ea69b42359255f02d0ffe7b3&token=1560489745&lang=zh_CN#rd)
144+
如果您觉得本项目和文章不错或者对你有所帮助,请给个星呗,你的肯定就是我继续创作的最大动力。
148145

149-
![BiaoChenXuYing](https://upload-images.jianshu.io/upload_images/12890819-091ccce387e2ea34.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
146+
欢迎关注公众号,并回复 **福利** 可领取免费学习资料,福利详情请猛戳: [免费资源获取--Python、Java、Linux、Go、node、vue、react、javaScript](https://mp.weixin.qq.com/s?__biz=MzA4MDU1MDExMg==&mid=2247483711&idx=1&sn=1ffb576159805e92fc57f5f1120fce3a&chksm=9fa3c0b0a8d449a664f36f6fdd017ac7da71b6a71c90261b06b4ea69b42359255f02d0ffe7b3&token=1560489745&lang=zh_CN#rd)
150147

148+
![BiaoChenXuYing](https://upload-images.jianshu.io/upload_images/12890819-0fc16a9e50276521.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
151149

152150

routes/article.js

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,13 @@ exports.getArticleList = (req, res) => {
135135
let likes = req.query.likes || '';
136136
let tag_id = req.query.tag_id || '';
137137
let category_id = req.query.category_id || '';
138+
let article = req.query.article || '';
138139
let pageNum = parseInt(req.query.pageNum) || 1;
139140
let pageSize = parseInt(req.query.pageSize) || 10;
141+
// 如果是文章归档 返回全部文章
142+
if (article) {
143+
pageSize = 1000;
144+
}
140145
let conditions = {};
141146
if (!state) {
142147
if (keyword) {
@@ -179,22 +184,19 @@ exports.getArticleList = (req, res) => {
179184
// 待返回的字段
180185
let fields = {
181186
title: 1,
182-
// author: 1,
183-
// keyword: 1,
184-
// content: 1,
185187
desc: 1,
186188
img_url: 1,
187189
tags: 1,
188190
category: 1,
189-
// state: 1,
190-
// type: 1,
191-
// origin: 1,
192-
// comments: 1,
193-
// like_User_id: 1,
194191
meta: 1,
195192
create_time: 1,
196-
// update_time: 1,
197193
};
194+
if(article){
195+
fields = {
196+
title: 1,
197+
create_time: 1,
198+
};
199+
}
198200
let options = {
199201
skip: skip,
200202
limit: pageSize,
@@ -213,7 +215,7 @@ exports.getArticleList = (req, res) => {
213215
});
214216
responseData.list = result;
215217
} else if (category_id) {
216-
console.log('category_id :', category_id)
218+
// console.log('category_id :', category_id);
217219
// 根据 分类 id 返回数据
218220
result.forEach(item => {
219221
if (item.category.indexOf(category_id) > -1) {
@@ -224,7 +226,7 @@ exports.getArticleList = (req, res) => {
224226
responseData.count = len;
225227
responseData.list = newList;
226228
} else if (tag_id) {
227-
console.log('tag_id :', tag_id)
229+
// console.log('tag_id :', tag_id);
228230
// 根据标签 id 返回数据
229231
result.forEach(item => {
230232
if (item.tags.indexOf(tag_id) > -1) {
@@ -234,7 +236,35 @@ exports.getArticleList = (req, res) => {
234236
let len = newList.length;
235237
responseData.count = len;
236238
responseData.list = newList;
237-
} else {
239+
} else if (article) {
240+
const archiveList = []
241+
let obj = {}
242+
// 按年份归档 文章数组
243+
result.forEach((e) => {
244+
let year = e.create_time.getFullYear()
245+
// let month = e.create_time.getMonth()
246+
if(!obj[year]){
247+
obj[year] = []
248+
obj[year].push(e)
249+
} else {
250+
obj[year].push(e)
251+
}
252+
})
253+
for (const key in obj) {
254+
if (obj.hasOwnProperty(key)) {
255+
const element = obj[key];
256+
let item = {}
257+
item.year = key
258+
item.list = element
259+
archiveList.push(item)
260+
}
261+
}
262+
archiveList.sort((a, b) => {
263+
return b.year - a.year;
264+
});
265+
responseData.list = archiveList;
266+
}
267+
else {
238268
responseData.list = result;
239269
}
240270
responseClient(res, 200, 0, '操作成功!', responseData);

0 commit comments

Comments
 (0)