sql >> Database teknologi >  >> NoSQL >> MongoDB

Refaktorering af middleware-kode for NodeJS-projektet ved hjælp af ruter, controllere og modeller

Der er 2 ting, som, når de bruges i kombination, vil gøre koden meget pænere:

  • Collection.find returnerer et løfte .
  • For at vente på, at et løfte løses i moderne Javascript, skal du bruge await

Du kan bruge følgende kode:

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

Eller for at hente resultaterne parallelt i stedet for seriel, brug 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
  }
});

Du kan bruge den samme slags mønster, når du har flere asynkrone opkald at foretage - ingen grund til grimme beslagsindlejring og indrykning.




  1. mongoose udfylde reference til underdokument

  2. Sammenligning af fortegnet 64 bit nummer ved hjælp af 32 bit bitvise operationer i Lua

  3. 3 måder at oprette et indeks på i MongoDB

  4. Migrering fra MongoDB til HBase