Od Mongoose 3.6 dodano możliwość rekursywnego wypełniania powiązanych dokumentów w zapytaniu. Oto przykład, jak możesz to zrobić:
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);
}
);
});
W tym przypadku wypełniam tablicę identyfikatorów w 'refUserListItems' dokumentami, do których się odnoszą. Wynik zapytania jest następnie przekazywany do innego zapytania wypełniającego, które odwołuje się do pola oryginalnego wypełnionego dokumentu, który chcę również wypełnić — „refSuggestion”.
Zwróć uwagę na drugą (wewnętrzną) populację - tutaj dzieje się magia. Możesz nadal zagnieżdżać te populacje i dołączać coraz więcej dokumentów, dopóki nie zbudujesz wykresu tak, jak tego potrzebujesz.
Przeanalizowanie tego, jak to działa, zajmuje trochę czasu, ale jeśli przez to przejdziesz, ma to sens.