Не уверен, как использовать async, поэтому спрашиваю - PullRequest
0 голосов
/ 02 мая 2018

Хорошо, так что я хочу взять из двух разных коллекций. Я использую Express и mongodb. Если я использую одну или другую коллекцию, она работает нормально, и я знаю, что не могу просто объединить две находки, как это: (прости меня ... это всего лишь пример.)

router.get("/", (req, res) => {
  User.findById(req.user._id, (err, user) => {
    if (err){
      console.log(err);
    }
    Item.find({}, (err, allItems) => {
      if (err) {
        console.log(err);
      }
      res.render("products", { items: allItems });
    });
  });
});

Я знаю, что мне нужно использовать async, но я не уверен, как это настроить. Если кто-то захочет помочь, я буду очень признателен.

Спасибо

1 Ответ

0 голосов
/ 02 мая 2018

Db-вызовы по своей природе асинхронные. Но Вы можете использовать Promise для объединения результатов асинхронных вызовов.

'use strict';

router.get("/", (req, res) => {

  Promise.all([
    User.findById(req.user._id),
    Item.find({})
  ]).then(results => {
    let [userDetails, items] = results;
    return res.render("products", {
      items: items,
      user: userDetails
    });
  }).catch(err => {
    console.log('err', err.stack);
  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...