2012-05-12 17 views
23

の配列に移入を使用して:マングース - 私は少しのように見えスキーマ持ったObjectId

var conversationSchema = new Schema({ 
    created: { type: Date, default: Date.now }, 
    updated: { type: Date, default: Date.now }, 
    recipients: { type: [Schema.ObjectId], ref: 'User' }, 
    messages: [ conversationMessageSchema ] 
}); 

だから私の受信者コレクションは、オブジェクトID、私のユーザー・スキーマ/コレクションを参照ののコレクションです。

私はクエリにこれらを移入する必要があるので、私はこのしようとしている:

Conversation.findOne({ _id: myConversationId}) 
.populate('user') 
.run(function(err, conversation){ 
    //do stuff 
}); 

しかし、明らかに「ユーザーが」...

に移入されていませんが、私はこれを行うことができます方法はありますが?

答えて

25

代わりに、コレクション名のスキーマ・パスの名前を使用してください:この質問を越えてくる他の誰のために

Conversation.findOne({ _id: myConversationId}) 
.populate('recipients') // <== 
.exec(function(err, conversation){ 
    //do stuff 
}); 
+1

これは*ヒントハット*。 – SomethingOn

62

... OPのコードは、スキーマ定義でエラーが...それはする必要がありますしています

var conversationSchema = new Schema({ 
    created: { type: Date, default: Date.now }, 
    updated: { type: Date, default: Date.now }, 
    recipients: [{ type: Schema.ObjectId, ref: 'User' }], 
    messages: [ conversationMessageSchema ] 
}); 
mongoose.model('Conversation', conversationSchema); 
+2

あなたの先生は、ちょうど私の痛みの世界を救っ:(私のため –

+0

良い方法を動作していない!しかし、どのようになし、重複して?一意のオブジェクトIDの配列を行うことができますか? – Gura

+0

{type:Schema.ObjectId、ref: 'User'、unique:true} –

関連する問題