node.js - Mongoose Nested Populate using Q not working -


i'm learning promises, , i'm trying clean nested populates using q.

problem: layers don't run in order, , resulting data isn't being passed through each successive layer.

q().then(layerone(aggr_data))   .then(layertwo)   .then(layerthree)  function layerone(aggr_data) {   var options = {       path: '_video'     , model: 'video'   };   return model_video.populate( aggr_data, options, function (err, snippet) {     if (err) return next(err);     return snippet;   }); };  function layertwo(snippet) {   var commentoptions = {       path: '_comments._author'     , model: 'user'   };   return model_user.populate(snippet, commentoptions, function (err, popsnippet) {     if (err) return next(err);     return popsnippet;   }); };  function layerthree(popsnippet) {   var videooptions = {       path: '_video._chirps._comments'     , model: 'comment'   };   return model_comment.populate(snippet, videooptions, function (err, deepsnippet) {     if (err) return next(err);     next(deepsnippet);   }); }; 

the layers don't run in order

your main problem you're not passing callback first then, result of call. q().then(layerone(aggr_data)) should either

q(aggr_data).then(layerone).then(…) 

or simply

layerone(aggr_data).then(…) 

Comments