> On Nov 8, 2015, at 1:07 PM, Ashutosh Das <areos...@gmail.com> wrote: > > I am using Mongoose with Bluebird library . Here is my code: > > router.route('/:name') > .get(function (req, res) { > var values = []; > Tag.findOneAsync({'name': req.params.name}, {urlId: 1, _id: > 0}).then(function (data) { > data['urlId'].forEach(function (urlId) { > Urls.findByIdAsync(urlId).then(function (result) { > values.push(result); > }).catch(function (err) { > res.status(500).send(err); > }); > }); > }).catch(function (err) { > res.status(500).send(err); > }); > > res.send(values); > }); > > Currently I am gettings empty 'values' array . My question is, how to > organize this code , so that I can get response after 'values.push()' > operation ?
You're making an empty array, starting the find, then sending the array, then later, filling the array. You'd move the res.send into the promise chain -- let me suggest a rewrite here: router.route('/:name').get(function (req, res) { Tag.findOneAsync({'name': req.params.name}, {urlId: 1, _id: 0}).then(function (data) { return Promise.all(data['urlId'].map(function (urlId) { return Urls.findByIdAsync(urlId) }) }).then(function (values) { res.send(values); }, function (err) { res.status(500).send(err); }); }); It's nice to think of 'then' as a singular 'map' -- take this value, and transform it into that value (or a promise of a value or values) Promise.all resolves a whole array of promises like that set of results of findByIdAsync. Aria -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. To post to this group, send email to nodejs@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/C748C88A-BDF8-43EA-A930-79EB65158D04%40dinhe.net. For more options, visit https://groups.google.com/d/optout.
smime.p7s
Description: S/MIME cryptographic signature