Вы можете добавить условие, чтобы проверить, когда разрешается последний запрос, и затем передать массив результатов в res.send
:
rating_router.get('/get/:id', (req, res) => {
Fablab.findById({ _id: req.params.id }, (err, fablab) => {
if (err) {
res.send(err)
}
else {
let ratingstest = []
fablab.rating.forEach(ratingID => {
Rating.findById({ _id: ratingID }, (err, rating) => {
if (err) {
res.send(err)
}
else {
ratingstest.push(rating)
// Check if this is the last one
if (ratingstest.length == fablab.rating.length) {
res.send(ratingstest)
}
}
})
})
}
})
})
Однако, возможно, было бы лучше использовать обещания:
rating_router.get('/get/:id', (req, res) => {
Fablab
.findById({ _id: req.params.id })
.then(fablab => fablab.rating || [])
.then(ratingIDs => ratingIDs.map(ratingID =>
Rating.findById({ _id: ratingID })
))
.then(ratingArr => Promise.all(ratingArr))
.then(result => res.send(result))
.catch(err => res.send(err))
})
Надеюсь, это поможет.