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) {
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