选择 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);
|