2012-04-13 67 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提供的多集合引用支持。