2016-06-28 8 views
1

これが良いか悪いのかはわかりませんが、2つのデータセット(mongodbコレクション)をjadeページに正常に反映させました。これらのデータマングーススキーマの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); 

私は成功したヒスイのTPLSに両方のコレクションを務めており、それらが正常に動作します。しかし、今私は私がやろうとしていることをする方法について混乱しています:

私は見積もりの​​人のためのデータをプルする引用符のページを構築しています。引用符コレクションの一重引用符のドキュメントには、人物コレクションの人物のObjectIdがあります。

は、これは私がこれまで持っているものですが、私はこだわっている:

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

それは動作しませんので。私は、引用文書で参照される人の文書に入り、firstNameとlastNameを取得する方法を見つける必要があります。

これは私が初めてstackoverflowに助けを求めることです。あなたが私を助けてくれる何かが足りない場合は教えてください。

+0

を引用符のためのDBを照会方法を示してください。あなたは* populate * 'Quote.find(...)を使っていますか?populate( '_ person')...'? – Molda

+0

私は.populate()関数について何も知らなかった。あなたがそれを述べるとすぐに、私はそれを見つめ、私の問題を解決しました。ありがとうございました! –

答えて

0

問題は、ObjectIdとrefをスキーマに追加する以外の追加ステップがあることです。 @Moldaによって指摘されているように、この作業を行うには.populate()関数を使用する必要があります。

コメントを見たら、.populate()関数を参照し、this pageはそれを説明してくれました。

だから私は電話をかけるとき、それはのようなものを見なければならない:

quote.find({}).populate({ 
    path: '_person', 
    model: 'person' 
    }).exec(callback); 
関連する問題