Created
March 12, 2014 17:30
-
-
Save bitdewy/9511929 to your computer and use it in GitHub Desktop.
xocean schema
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// !!! sketch, no constraint | |
var mongoose = require('mongoose'), | |
Schema = mongoose.Schema; | |
var WorkItemSchema = new Schema({ | |
description: String, | |
createdAt: Date, | |
lastModified: Date, | |
status: Number | |
}); | |
// no comment on comment so far | |
var CommentSchema = new Schema({ | |
username: String, | |
content: String | |
}); | |
var TagSchema = new Schema({ | |
name: String, | |
description: String | |
}) | |
var ArticleSchema = new Schema({ | |
title: String, | |
body: String, | |
createdAt: Date, | |
lastModified: Date, | |
comments: [CommentSchema], | |
tags: [TagSchema], | |
status: Number | |
}); | |
var UserSchema = new Schema({ | |
name: String, | |
email: String, | |
role: { | |
type: String, | |
default: 'user' | |
}, | |
hashedPassword: String, | |
provider: String, | |
salt: String, | |
facebook: {}, | |
twitter: {}, | |
github: {}, | |
google: {}, | |
group: Number, | |
employeeID: String, | |
works: [WorkItemSchema], | |
articles: [ArticleSchema] | |
}); |
var WorkItemSSchema = new Schema({
createdAt: Date,
lastModified: Date,
summaryItems:[WorkItemSchema],
planItems:[WorkItemSchema]
});
var WorkItemSchema = new Schema({
description: String,
status: Number
})
工作项那块可能得复杂一点
@ijse 懂了~ 原则就是能在一个 collection 里就尽量在一个 collection 里, 文档型想怎么嵌套怎么嵌套, 随意度有点高啊~
gist 是没有 notification ??!!! (╯‵□′)╯︵┻━┻
@bitdewy
那还是单独的吧,不过还是得加个字段区分下上周还是下周吧
不是那么简单的原则。。 其实我觉得设计的时候需要各种权衡,最重要的是要跟业务结合,有过一些经验,设计的时候就可以避免走一些弯路。
可以去参考下其它开源项目的源码,很多的。
那个数据库设计的三泛式其实在这里不是特别适合。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@bitdewy
comment on comment 用nested也同样可以的,只要我们不需要单独处理comment
MongoDB是文档型数据库,与其它关系型数据库在设计时是有些不同的,按关系型数据库思想去设计,你会很痛苦的。
tag用
String
或者[String]
比较合适,不仅可以减少一次查询请求,而且读写也更方便。写方便就不说了,查询可以像下面这样:
或者,对于
[String]
类型的:同样对于查询所有tag也是可以只用一次查询就做到的。
mongoose虽然是orm框架,但对于两个Collection的关联并不会自动给你处理,MongoDB的
DBRef
基本约等于手动。