2012-05-12 22 views
23

bir dizi üzerinde doldurmak kullanarak: nesne kimliği benim kullanıcı şema/koleksiyon başvuran topluluğudur,Gelincik - Biraz benzeyen bir şema var 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 ] 
}); 

Yani alıcılarımın koleksiyonu.

Ben sorguya bunlar doldurmak gerekir, bu yüzden bu çalışıyorum:

bunu yapabilirim bir yolu var mı

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

Ama açıkçası 'kullanıcı' doldurmamak olduğunu ... ?

cevap

25

yerine toplama adının şema yolunun adı kullanın: Bu soru karşısında geliyor herkesten için

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

Bu benim için çalışmıyor :( – SomethingOn

62

.. OP'ın kod şema tanımında bir hata .. Olması gerektiği etti:

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

sen efendim sadece * ipuçları şapka * –

+0

iyi bir yoldur. bana acı dünyasına kurtardı! fakat hiç yinelenen ile benzersiz nesne kimliği bir dizi? nasıl yapabilirim? – Gura

+0

{type: Schema.ObjectId, ref: 'Kullanıcı', benzersiz: true} –