Od verze Mongoose 3.6 byla přidána možnost rekurzivně vyplňovat související dokumenty v dotazu. Zde je příklad, jak to můžete udělat:
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);
}
);
});
V tomto případě vyplňuji pole id v 'refUserListItems' jejich odkazovanými dokumenty. Výsledek dotazu je poté předán do jiného vyplňovaného dotazu, který odkazuje na pole původního vyplněného dokumentu, který chci také vyplnit – 'refSuggestion'.
Všimněte si druhé (vnitřní) populace - zde se děje kouzlo. Můžete pokračovat ve vnořování těchto souborů a připojovat se k dalším a dalším dokumentům, dokud nevytvoříte svůj graf tak, jak ho potřebujete.
Chvíli trvá, než pochopíte, jak to funguje, ale pokud se tím propracujete, dává to smysl.