[NodeJs] Express + Mongodb + Materialize 搭建多人博客
2016-12-22 00:34
716 查看
一个用 Express、MongoDB、Materialize 搭建的小型多人博客。
由于本人也只是基本学了下这些框架,第一次写个小型博客来练练手,基本功能已经实现,还有些其他功能未完全实现,会持续更新。
另外,可能还有些小细节没有注意到,如果有发现哪里有 bug 或者好的建议,请不吝指出,谢谢。
在线预览: http://118.89.16.142/
管理员账号: admin
密码: microblog
只有用这个账号才可以发表、修改、删除文章,删除评论等。
自己新注册的为普通用户,只能修改个人信息,发表评论、回复。想要体验一下的,直接用这个公共账号就可以啦。
另外,若是自己注册,找不到确认邮件的话,请检查一下 垃圾邮件,很可能被误当作 垃圾邮件 处理了。
Express: 4.x
MongoDB: v3.2.10
文章列表
文章详情
例如,使用 163 邮箱的 SMTP。
当然,最好还是在系统环境变量里设置这些值。
然后,根据需要更改文件 bin/www 中的数据库连接,默认为
上述操作完成后就可以正常启动了。
文章编辑器的基本实现参考之前写的 Express 处理 markdown——marked+prism+github-markdown-css。
找回密码、用户确认使用的邮件服务也可参考 nodemailer 发送邮件。
发表、删除、修改
分类加标签
评论
只有登录了的用户可以使用评论功能
评论、回复、删除 (回复评论只能回复一级)
用户
登入、登出
注册
找回密码、更改密码
修改个人信息
添加、删除评论
修改个人信息
管理员(附加)
发表、修改、删除自己的文章
删除自己文章下的评论
不能直接删除博客所有者的评论,可以间接删除含博客所有者评论的文章或者含博客所有者回复的非博客所有者的评论
博客所有者(附加)
所有文章修改、删除
所有评论删除
id (ObjectId)
username (String,长度3-10,[0-9a-zA-Z-_])
email (String)
password (String,长度6-18,[0-9a-zA-Z+-*/=!?@_])
avatar (String link)
registDate (Date)
confirmDate 发送激活时间(Date)
confirmed 是否激活(Boolean)
role 身份(Number 0: 普通用户,1: 管理员,2: 所有者)
encrypt 密码是否已经加密(Boolean)
Article
id (ObjectId)
title (String)
author (ref: ObjectId)
content (String)
intro (String)
categories (ref: ObjectId, array)
comments (ref: ObjectId, array)
publishDate (Date)
updateDate (Date)
pageviews (Number)
Category 分类
id (ObjectId)
name (String)
count (Number)
articles (ref: ObjectId, array)
Comment
id (ObjectId)
article (ref: ObjectId)
author (ref: ObjectId)
content (String)
time (Data)
replies (ref: ObjectId, array)
Reply
id (ObjectId)
article (ref: ObjectId)
author (ref: ObjectId)
content (String)
time (Data)
Avatar
id (ObjectId)
name (String)
src (String)
文章列表页
文章单页
个人信息页
由于本人也只是基本学了下这些框架,第一次写个小型博客来练练手,基本功能已经实现,还有些其他功能未完全实现,会持续更新。
另外,可能还有些小细节没有注意到,如果有发现哪里有 bug 或者好的建议,请不吝指出,谢谢。
在线预览: http://118.89.16.142/
管理员账号: admin
密码: microblog
只有用这个账号才可以发表、修改、删除文章,删除评论等。
自己新注册的为普通用户,只能修改个人信息,发表评论、回复。想要体验一下的,直接用这个公共账号就可以啦。
另外,若是自己注册,找不到确认邮件的话,请检查一下 垃圾邮件,很可能被误当作 垃圾邮件 处理了。
环境
Node: v7.0.0Express: 4.x
MongoDB: v3.2.10
效果预览
主页文章列表
文章详情
使用方法
启动
首先,根据自己需要改写 modules/config.js 的secret和
mailServer。
secret在加密部分使用。
mailServer用以发送确认邮件来实现确认账户和找回密码。
secret: process.env.BLOG_SECRET, ... mailServer: { host: process.env.MAIL_HOST, secureConnection: true, port: parseInt(process.env.MAIL_PORT), auth: { user: process.env.MAIL_USERNAME, pass: process.env.MAIL_PASSWORD, } },
例如,使用 163 邮箱的 SMTP。
secret: 'microblogsecret', ... mailServer: { host: 'smtp.163.com', secureConnection: true, port: 465, auth: { user: 'yourUsername@163.com', pass: 'yourPassword', } },
当然,最好还是在系统环境变量里设置这些值。
然后,根据需要更改文件 bin/www 中的数据库连接,默认为
mongoose.connect('mongodb://localhost/microblog');
上述操作完成后就可以正常启动了。
权限管理
暂时只能通过数据库直接操作,将user的
role手动改为 1 (管理员),2 (博客所有者,拥有最高权限)。
介绍
基本的功能还有数据模型,文章编辑仅支持 markdown 语法。文章编辑器的基本实现参考之前写的 Express 处理 markdown——marked+prism+github-markdown-css。
找回密码、用户确认使用的邮件服务也可参考 nodemailer 发送邮件。
功能
文章发表、删除、修改
分类加标签
评论
只有登录了的用户可以使用评论功能
评论、回复、删除 (回复评论只能回复一级)
用户
登入、登出
注册
找回密码、更改密码
修改个人信息
用户权限
用户添加、删除评论
修改个人信息
管理员(附加)
发表、修改、删除自己的文章
删除自己文章下的评论
不能直接删除博客所有者的评论,可以间接删除含博客所有者评论的文章或者含博客所有者回复的非博客所有者的评论
博客所有者(附加)
所有文章修改、删除
所有评论删除
数据库模型
Userid (ObjectId)
username (String,长度3-10,[0-9a-zA-Z-_])
email (String)
password (String,长度6-18,[0-9a-zA-Z+-*/=!?@_])
avatar (String link)
registDate (Date)
confirmDate 发送激活时间(Date)
confirmed 是否激活(Boolean)
role 身份(Number 0: 普通用户,1: 管理员,2: 所有者)
encrypt 密码是否已经加密(Boolean)
Article
id (ObjectId)
title (String)
author (ref: ObjectId)
content (String)
intro (String)
categories (ref: ObjectId, array)
comments (ref: ObjectId, array)
publishDate (Date)
updateDate (Date)
pageviews (Number)
Category 分类
id (ObjectId)
name (String)
count (Number)
articles (ref: ObjectId, array)
Comment
id (ObjectId)
article (ref: ObjectId)
author (ref: ObjectId)
content (String)
time (Data)
replies (ref: ObjectId, array)
Reply
id (ObjectId)
article (ref: ObjectId)
author (ref: ObjectId)
content (String)
time (Data)
Avatar
id (ObjectId)
name (String)
src (String)
视图
主页文章列表页
文章单页
个人信息页
附件
完整代码: blog-materialize - Github相关文章推荐
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
- 使用express+mongoDB搭建多人博客 学习(4)登录与登出
- 2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客
- node+express+mongoDB搭建个人博客 (六)
- MongoDB + express + node + bootstrap 搭建多人博客
- nodejs+express+mongodb搭建博客
- 使用express+mongoDB搭建多人博客 学习(5)权限控制
- node+express+mongoDB搭建个人博客 (三)
- 使用nodejs、mongodb、express、linux搭建社区网站(3)-页面与路由
- 使用nodejs、mongodb、express、linux搭建社区网站(2)之项目创建及app.js生成
- nodejs博客系统(express+mongodb)2——划分模块+连接数据库
- 一个nodejs+mongodb搭建的博客,使用module: ejs, express, mongodb, underscore等,不错的入门文章
- 使用 Express + MongoDB 搭建多人博客
- node.js&mongodb&express 搭建个人博客系统
- 使用nodejs、mongodb、express、linux搭建社区网站(4)-mongodb连接及注册的开发
- 使用express+mongoDB搭建多人博客 学习(2)路由与模板
- Nodejs实战双色(by赵坤等...)第一章Express+MongoDB搭建博客的一些错误
- NodeJS搭建博客系统(四)使用模版引擎(node+express+ejs做的一个demo)
- nodejs博客系统(express+mongodb)1——模块引擎配置
- Express + MongoDB 搭建一个多人博客(node.js实战)