2016-06-28 32 views
1

不知道這是好還是壞的做法,但我已成功地將兩組數據(mongodb集合)服務到一個玉頁面。這些數據獴架構的如何從Jade中找到數據數組中的特定項目?

例子如下:

... 
var personSchema = new Schema({ 
firstName: String, 
lastName: String, 
email: String, 
city: String, 
state: String, 
zip: Number 
}); 
module.exports = mongoose.model('person', personSchema); 

... 
var personQuoteSchema = new Schema({ 
_person : { 
    type: Schema.ObjectId, 
    ref: 'person' 
}, 
quote: Number 
}); 
module.exports = mongoose.model('quote', personQuoteSchema); 

我成功服務過兩個集合的玉第三方物流和他們很好地工作。但現在我很困惑如何做我想做的事情:

我正在建立一個報價單,爲報價者提供數據。在報價集合中單引號的文檔中,它具有來自人員集合的人員的ObjectId。

這是我到目前爲止,但我卡住:

each quote in quotes 
ul 
    li #{quote.quote} 
    li #{quote._person.firstName} #{quote._person.lastName} 

因爲這是行不通的。我需要找到一種方法進入引用文檔中引用的person文檔並獲取firstName和lastName。

這是我第一次求助於stackoverflow,請讓我知道如果我錯過了任何可以幫助你的東西。

+0

請告訴你如何查詢分貝的報價。你在用*填充*'Quote.find(...)。populate('_ person')...'? – Molda

+0

我對.populate()函數一無所知。只要你提到它,我就會查找它並解決我的問題。謝謝! –

回答

0

問題是除了添加ObjectId和ref到Schema之外還有一個額外的步驟。正如@Molda指出的,你必須使用.populate()函數來完成這個工作。

一旦我看到評論,我查了一下.populate()函數,並且this page做了很好的解釋。

所以,當我打這個電話,它看起來是這樣的:

quote.find({}).populate({ 
    path: '_person', 
    model: 'person' 
    }).exec(callback); 
相關問題