От Mongoose 3.6 е добавена възможността за рекурсивно попълване на свързани документи в заявка. Ето пример за това как можете да го направите:
UserList.findById(listId)
.populate('refUserListItems')
.exec(function(err, doc){
UserListItem.populate(doc.refUserListItems, {path:'refSuggestion'},
function(err, data){
console.log("User List data: %j", doc);
cb(null, doc);
}
);
});
В този случай попълвам масив от идентификационни номера в 'refUserListItems' с техните препратки документи. След това резултатът от заявката се предава в друга заявка за попълване, която препраща към полето на оригиналния попълнен документ, който също искам да попълня – „refSuggestion“.
Обърнете внимание на второто (вътрешно) попълване - тук се случва магията. Можете да продължите да влагате тези попълвания и да добавяте към все повече и повече документи, докато не изградите графиката си по начина, по който се нуждаете.
Отнема малко време, за да усвоите как работи това, но ако го преработите, има смисъл.