Er zijn 2 dingen die, wanneer ze in combinatie worden gebruikt, de code veel mooier zullen maken:
Collection.find
retourneert een Belofte .- Als u wilt wachten tot een Belofte wordt opgelost in modern Javascript, gebruikt u
await
U kunt de volgende code gebruiken:
const Person= require('./models/person')
const Mortician = require('./models/mortician')
router.get('/', async (req, res, next) => {
try {
const persons = await Person.find({ pickedUp: false });
const morticians = await Mortician.find({});
res.render('pages/dashboard', {
title: 'Dashboard',
persons,
morticians,
});
} catch(e) {
// handle errors
}
});
Of, om de resultaten parallel op te halen in plaats van serieel, gebruik Promise.all
:
router.get('/', async (req, res, next) => {
try {
const [persons, morticians] = await Promise.all([
Person.find({ pickedUp: false }),
Mortician.find({})
]);
res.render('pages/dashboard', {
title: 'Dashboard',
persons,
morticians,
});
} catch(e) {
// handle errors
}
});
U kunt hetzelfde soort patroon gebruiken wanneer u meerdere asynchrone aanroepen moet doen - u hoeft geen lelijke haakjes nesten en inspringen.