节点js + Mongo数据库设计

时间:2012-05-24 20:10:13

标签: javascript node.js mongodb

我正在开发一个node.js + mongoose webapp,我对数据库创建有一个疑问。这就是数据库的定义方式:

var user = new Schema({
 id : ObjectId,
 name : String,
 password : String,
 email : String,
 created : Date
});
var comment = new Schema({
 id : ObjectId,
 userId: ObjectId,
 content : String,
 created : Date
})

我想将每条评论与其用户相关联......那么......这是最好的方法吗?我想将这两个中的一个添加到评论模式......但我不知道它是否是正确的答案,或者是否还有另一个更好的答案:

userId: ObjectId,

或:

userObject: user

谢谢!

希望你能帮助我!

2 个答案:

答案 0 :(得分:1)

嗯,这取决于。你的问题没有明确的答案。一般来说,我建议你不要使用本机MongoDB字段引用,这些引用会带来轻微的开销。

对于我的所有项目,我肯定会选择第一个解决方案,它通常更加灵活,可以节省一些磁盘空间。由于必须自己再做一次请求。

答案 1 :(得分:0)

此案例的简单数据结构是使用mongoose调用embedded documents

正如Brandon Tilley所提到的,您可能还想看看类似DBRef的行为和mongoose的populate功能。这将允许您将Comments实体作为单独的独立实体来处理。缺点是如果你有一个评论的实例并且想要访问用户的属性,你必须首先填充你对用户的引用。

最后,这取决于您的使用案例以及您更喜欢导航信息的方式。我说不要过多考虑它并尝试任何。如果您稍后决定另一个结构最佳,只需更改它。幸运的是,对于MongoDB和NoSQL来说,这非常简单。