MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Refactoring des Middleware-Codes des NodeJS-Projekts unter Verwendung von Routen, Controllern und Modellen

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.