sql >> Databáze >  >> NoSQL >> MongoDB

Refaktorování middlewarového kódu projektu NodeJS pomocí tras, kontrolérů a modelů

Jsou 2 věci, které, když se použijí v kombinaci, udělají kód mnohem hezčí:

  • Collection.find vrátí Slib .
  • Chcete-li počkat na vyřešení příslibu v moderním JavaScriptu, použijte příkaz await

Můžete použít následující kód:

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
  }
});

Nebo chcete-li získat výsledky paralelně, nikoli sériově, použijte 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
  }
});

Stejný druh vzoru můžete použít, kdykoli potřebujete provést více asynchronních volání – není třeba ošklivé vnořování a odsazování závorek.




  1. Python - Jak zkontrolovat, zda je dostupný server Redis

  2. MassTransit sága s Redis persistence dává Method Accpet nemá implementační výjimku

  3. Java Future - Spring Authentication je v AuditorAware nulová

  4. Odinstalujte MongoDB na Mac OS X