2016-03-06 18 views
0

Мой выход в скринеPopulate запрос в массиве вложенных документов - мангуст

enter image description here

и мой Заселите запрос

Post.findOne({_id:req.query.id}). 
    populate('user'). 
    populate('comment'). 
    exec(function(err,docs){ 
     if(err){ 
      console.log(err); 
     } 
      console.log(docs); 
     res.send(docs); 
    }); 
}); 

Как получить данные объекта пользователя в комментариях массива?

+1

Можете ли вы попробовать включить фактический код в ваш вопрос, а не изображения, потому что код в изображениях не могут быть скопированы и вставить в редактор и скомпилировать, чтобы воспроизвести проблему? Среди многих других причин, по которым обычно не рекомендуется размещать изображения кода здесь на SO, изображения большие и трудночитаемые на некоторых мобильных устройствах, их нельзя искать и, следовательно, не полезны будущим читателям – chridam

+0

, пожалуйста, разместите свою схему - запрос выглядит нормально, поэтому проблема должна быть в схеме. ахх - я только что заметил. Ваш запрос работает, но вы не нашли способ заполнить поле Post.comment.comments.user. См. Ниже ответ. – Reto

ответ

0

Раньше был невозможен с мангустами для заполнения поля глубже заселенных объектов непосредственно в запросе, но вы всегда можете использовать ручное население, передавая свои resultdocs к Comment.populate(comments, options, cb) методе (http://mongoosejs.com/docs/api.html#model_Model.populate) внутри первого обратного вызова.

С новыми версиями Mongoose вы должны быть в состоянии сделать это напрямую, используя следующий синтаксис:

Post. 
    find(). 
    populate({ 
     path: 'comment', 
     populate: { 
      path: 'comments', 
      populate: 'user' 
     } 
    } 
}); 
+0

Этот метод решает ваш вопрос или он не работает? Я никогда не пробовал этот новый синтаксис сам, но мне интересно, работает ли он – Reto