Es gibt 2 Dinge, die, wenn sie in Kombination verwendet werden, den Code viel schöner machen:
Collection.find
gibt ein Versprechen zurück .- Um in modernem Javascript auf die Auflösung eines Promise zu warten, verwenden Sie
await
Sie können den folgenden Code verwenden:
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
}
});
Oder verwenden Sie Promise.all
, um die Ergebnisse parallel statt seriell abzurufen :
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
}
});
Sie können die gleiche Art von Muster immer dann verwenden, wenn Sie mehrere asynchrone Aufrufe durchführen müssen - keine Notwendigkeit für hässliche Verschachtelungen von Klammern und Einrückungen.