我正在开发一个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
谢谢!
希望你能帮助我!
答案 0 :(得分:1)
嗯,这取决于。你的问题没有明确的答案。一般来说,我建议你不要使用本机MongoDB字段引用,这些引用会带来轻微的开销。
对于我的所有项目,我肯定会选择第一个解决方案,它通常更加灵活,可以节省一些磁盘空间。由于必须自己再做一次请求。
答案 1 :(得分:0)
此案例的简单数据结构是使用mongoose调用embedded documents。
正如Brandon Tilley所提到的,您可能还想看看类似DBRef的行为和mongoose的populate功能。这将允许您将Comments实体作为单独的独立实体来处理。缺点是如果你有一个评论的实例并且想要访问用户的属性,你必须首先填充你对用户的引用。
最后,这取决于您的使用案例以及您更喜欢导航信息的方式。我说不要过多考虑它并尝试任何。如果您稍后决定另一个结构最佳,只需更改它。幸运的是,对于MongoDB和NoSQL来说,这非常简单。