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
Post a Comment