The easiest way is to use bluebird promises, in particular the each , props , reduce and map methods, depending on your use case.
In your case, I would suggest something line by line
var bluebird = require('bluebird'); var mongoose = require('mongoose'); var UserModel = mongoose.model('User'); function getUser(userId) { return UserModel.findOne({_id: userId}).lean().exec() .then(function(user){ return bluebird.props({ firstName: user.firstName, parents: bluebird.map(user.parents, getUser), children: bluebird.map(user.children, getUser), partner: bluebird.map(user.partner, getUser), sibling: bluebird.map(user.sibling, getUser) }) }); }
Let me know how this happens!
source share