दो चीजें हैं, जो संयोजन में उपयोग किए जाने पर, कोड को बहुत अच्छा बना देंगी:
Collection.find
एक वादा लौटाता है ।- आधुनिक Javascript में किसी वादे के समाधान की प्रतीक्षा करने के लिए,
await
. का उपयोग करें
आप निम्न कोड का उपयोग कर सकते हैं:
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
}
});
या, सीरियल के बजाय समानांतर में परिणाम प्राप्त करने के लिए, 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
}
});
जब भी आपके पास करने के लिए कई एसिंक्रोनस कॉल हों, तो आप उसी तरह के पैटर्न का उपयोग कर सकते हैं - बदसूरत ब्रैकेट नेस्टिंग और इंडेंटेशन की कोई आवश्यकता नहीं है।