选择 MongoDB 作为数据库的 Node 开发者,避免不了 MongoDB 数据库设计,而 Mongoose 是 Mongodb 和 Node.js 之上基于 Schema 的数据建模和解决方案,提供类型转换,字段校验,查询构造等功能。最近自己想做一个基于 MongoDB 的博客系统,网上搜了一些资料,总结了以下 Schema 设计。
博客系统实现需要三张表:
文章表
文章表包含了以下这些字段。
| 字段名 |
字段含义 |
| title |
文章的标题 |
| content |
文章的内容 |
| category |
文章的分类 |
| author |
文章的作者 |
| slug |
文章的url(如果是中文的话,给其起一个英文的名称,说是有利于搜索引擎的优化,有点不大明白) |
| published |
文章是否发布 |
| meta |
搜集这个文章被赞了多少次,被踩了多少次。 |
| comments |
文章的评论 |
| created |
文章的创建时间 |
实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var mongoose = require('mongoose'), Schema = mongoose.Schema;
var PostSchma = new Schema({ title : { type: String, required: true }, content : { type: String, required: true }, category : { type: Schema.Types.ObjectId, ref: 'Category' }, author : { type: Schema.Types.ObjectId, ref: 'User' }, slug : { type: String, required: true }, published: { type: Boolean, default: false }, meta : { type: Schema.Types.Mixed }, comments : [ Schema.Types.Mixed ], created : { type: Date } });
mongoose.model('Post', PostSchema);
|
用户表
用户表主要由以下字段构成。
| 字段名 |
字段含义 |
| name |
用户名 |
| email |
邮箱地址 |
| password |
密码 |
| created |
创建时间 |
实现:
1 2 3 4 5 6 7 8 9 10 11 12 13
| var mongoose = require('mongoose'), Schema = mongoose.Schema;
var md5 = require('md5');
var UserSchema = new Schema({ name : { type: String, required: true }, email : { type: String, required: true }, password: { type: String, required: true }, created : { type: Date } });
mongoose.model('User', UserSchema);
|
分类表
分类表主要有以下字段构成。
| 字段名 |
字段含义 |
| name |
分类名称 |
| slug |
固定链接 |
| created |
创建时间 |
实现:
1 2 3 4 5 6 7 8 9 10
| var mongoose = require('mongoose'), Schema = mongoose.Schema; var CategorySchema = new Schema({ name : { type: String, required: true }, slug : { type: String, required: true }, created: { type: Date } });
mongoose.model('Category', CategorySchema);
|