sql >> Database >  >> NoSQL >> MongoDB

Refactoring van middleware-code van NodeJS-project, met behulp van routes, controllers en modellen

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.




  1. Luister naar wijzigingen in de redis-lijst

  2. MongoDB - Een document verwijderen

  3. Word ik te veel in rekening gebracht door Azure Cosmo DB voor een database van 45 MB?

  4. MongoDB vs. Redis vs. Cassandra voor een snelle, tijdelijke opslagoplossing voor rijen