MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Рефакторинг на мидълуерния код на проекта NodeJS, използвайки маршрути, контролери и модели

Има 2 неща, които, когато се използват в комбинация, ще направят кода много по-хубав:

  • Collection.find връща Обещание .
  • За да изчакате Promise да се разреши в съвременния 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
  }
});

Можете да използвате един и същ вид шаблон винаги, когато имате няколко асинхронни извиквания за извършване - няма нужда от грозно влагане в скоби и отстъпи.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Преобразувайте MongoCursor от ->find() в масив

  2. MongoDB - обновяване на документи в масив

  3. Mongo db не е равно на заявката не работи

  4. Настройте персонализирани конвертори в Spring Data Mongo

  5. Mongoose заявка за вложени документи, по-големи или по-малко от определена дата