2012-04-13 58 views
3

我有以下2层架构:DbRef与猫鼬 - mongoose-dbref或填充?

公司事件:

var companyEventSchema = new Schema({ 
    name : String, 
    description 
    date : Date, 
    attendees : [ { type : Schema.ObjectId, ref : 'Member' } ], 
]}); 

和会员

var memberSchema = new Schema({ 
    name : String, 
    emailAddress: String, 
    password :String, 
    created: { type: Date, default: Date.now } 
}); 

是我从companyEventSchema ref'd会员的方式是否正确? 我正在尝试做一件长达dbref的行。

我看到了孤单,虽然一个单独的项目... mongoose-dbref

然而,猫鼬文档说上面提供了“DBREF相似的功能”

这将是更有效?

+1

一切看起来都不错,但请记住,'ref:'Member''只有在稍后将该模式加载到mongoose模型中时才有效:'member = mongoose.model('Member',memberSchema)'。我一直在使用populate,因为我发现mongoose-dbref给了我相同的结果! – drinchev 2012-04-14 08:50:11

回答

9

对于字段可以包含引用潜在多个集合中的文档的ObjectId的情况,您只需要使用实际的DBRef(和mongoose-dbref)。 A DBRefObjectId的元组,集合名称和可选的数据库名称。

猫鼬ref:领域,但只包含一个ObjectId和它的猫鼬架构,它定义了一个收集的参考的ObjectID。

So Mongoose ref:字段效率更高,应始终使用,除非您需要DBRef提供的多集合引用支持。