2017-08-20 2 views
0

mein Nachrichtenschema:Zugriff auf eine Eigenschaft in mongoose populate nicht möglich?

const MessageSchema = new Schema({ 
    conversationId: { 
    type: Schema.Types.ObjectId, 
    required: true 
    }, 
    body: { 
    type: String, 
    required: true 
    }, 
    seen: { 
    type: Boolean, 
    default: false, 
    }, 
    sender: { 
    type: Schema.Types.ObjectId, 
    ref: 'userModel' 
    }, 
    receiver: { 
    type: Schema.Types.ObjectId, 
    ref: 'userModel' 
    }, 
}, 
{ 
    timestamps: true 
}); 

wenn ich den Hörer und User console.log es ein Objekt zurückgibt, es so gibt es:

{ _id: 597f7eb1e5131d5a50e18d14, 
    updatedAt: 2017-07-31T19:02:09.035Z, 
    createdAt: 2017-07-31T19:02:09.035Z, 
    fullName: 'ria atayde', 
    email: '[email protected]', 
    password: '$2a$08$Kbkk69.8I9RQvTaRXy3nw.Oj.SEPhKPmhtI/ZWxIHyz2lgYiciVlC', 
    todos: 
     [ 597f801eab95955c1469bbfc, 
     597f8026ab95955c1469bbfd, 
     597f8030ab95955c1469bbfe ], 
    friendsIds: [ '597f7e3ce5131d5a50e18d13' ], 
    active: true, 
    __v: 0 } 

Dies ist meine Frage:

await MessageModel.find({ conversationId: { $in: conversationIdsByUser } }) 
             .populate({path:'receiver' ,options: { lean: true}}) 
             .populate({path:'sender' ,options: { lean: true}}) 
             .lean(); 

Ich habe bereits schlank verwendet, kann aber immer noch nicht auf Empfänger- und Sendereigenschaften zugreifen, z receiver._id? aber das Objekt ist da?

+0

Fragen zur Debugging-Hilfe (** "Warum funktioniert dieser Code nicht?" **) muss das gewünschte Verhalten, ein * spezifisches Problem oder einen Fehler und den kürzesten erforderlichen Code * enthalten, um es in der Frage selbst zu reproduzieren **. Fragen ohne ** eindeutige Problemaussage ** sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels.] (Http://stackoverflow.com/help/mcve) –

Antwort

0

Funktioniert das?

await MessageModel.find({ conversationId: { $in: conversationIdsByUser } }) 
    .populate('receiver sender', { lean: true}}) 
    .lean(); 

Was passiert, wenn Sie versuchen, ohne lean Optionen abzufragen?

await MessageModel.find({ conversationId: { $in: conversationIdsByUser } }) 
    .populate('receiver sender'); 

Sie sollten die oben als auch versuchen, da jemand auf Mungo GitHub kommentierte, dass mit bevölkern mager mit still buggy ist.

Verwandte Themen