Promise.all
- это все или ничего. Он разрешает один раз все разрешения в массиве или отклоняет их, как только одно из них отклоняется. один из альтернативных способов - отфильтровать ваши обещания, чтобы вы ожидали только разрешенных.
Promise.all([p1, p2, p3].map(toResultObject)).then((values) => {
for (let i = 0; i < values.length; ++i)
if (!values[i].success) console.log("ERR: " + values[i].error);
else console.log(values[i].result);
});
см. Avoiding-Promise-all-fail-fast-поведения
НОВЫЙ ОТВЕТ
router.get('/app/:cars_getroute', ensureAuthenticated, async (req, res) => {
const promises = [
Car.findOne({
cars_getroute: req.params.cars_getroute
}),
Caratio.findOne({
cars_getroute: req.params.cars_getroute
}),
Annonce.findOne({
cars_getroute: req.params.cars_getroute
})
]
let [cars, caratios, annonces] = await Promise.all(promises.map(p => p.catch(e => null)))
})
Но, конечно, вы должны проверять каждое значение на обнуляемость.