2017-04-09 4 views
2

Ich mache eine Blogapp. Zwei Modell Kommentar und Userprofile, sieht Kommentar etwas wie folgt aus:mongoose wie man ein Array referenziert innerhalb des Modells

var commentSchema = new Schema({ 
      userId: {type: Schema.Types.ObjectId, ref: 'userProfile'}, 
      replyCommentId: [{type: Schema.Types.ObjectId, ref:'Comment'}], 
      commentDesc: String, 
      date: {type: String, default: Date.now()} 
      }); 

Ich habe gespeichert Antworten als Kommentare selbst und Haupt Kommentar über replycomment id in Array gespeichert verwiesen.

Ich habe versucht, diese Antwortfelder zu füllen.

commentsModel.findOne({_id: commentId}).populate('replyCommentId') 
.populate('replyCommentId.userProfile').exec(function (err, docs) { 
    cb(err, docs); 
}) 

I replyCommentId mit Modell aber userProfile innerhalb replycommentId füllen könnte, ist nicht aufgefüllt zu werden.

Antwort

0

Man könnte es so versuchen:

... 
 

 
const populateQuery = []; 
 
populateQuery.push({ 
 
    path: 'replyCommentId' 
 
}, { 
 
    path: 'replyCommentId', 
 
    populate: { 
 
    path: "userProfile", 
 
    model: "Comment", 
 
    }, 
 
}); 
 

 
fields.commentsModel.findById(commentId) 
 
    .populate(populateQuery) 
 
    .exec((error, docs) => { 
 
    cb(error, docs); 
 
    }); 
 

 
....

+0

Es funktionierte für mich. Ich habe deine Logik. Vielen Dank. Ich könnte Ihnen einen positiven Kommentar geben, aber ich bin neu, wenn ich überlaufe und ich baue meinen Ruf auf. –

+0

Nun, wenn Sie meine Antwort akzeptieren Sie erhalten 2 Ruf;) –

0

Sie nicht brauchen, das verwenden, um zwei bevöl quesries aufzufüllen replyCommentId und userId innen. Es kann mit einem Populate durchgeführt werden.

Sie können einfach diese versuchen:

commentsModel 
    .findOne({_id: commentId}). 
    .populate({ 
     path : 'replyCommentId', 
     populate : { 
      path :'userId' 
     } 
    }).exec(function (err, docs) { 
     cb(err, docs); 
    }); 

Weitere Informationen zu Mongoose Populate und seine Optionen finden Sie in Mongoose Populate Documentation. Suchen Sie nach Auffüllen über mehrere Ebenen.

+0

Ich habe dies versucht, es funktioniert nicht userId wird nicht mit Modell bevölkert, es wird immer noch referenziert. –

+0

Sie können meine bearbeitete Antwort versuchen. Dies wird für Sie arbeiten –

Verwandte Themen