Использование обещаний с функциями mon goose - PullRequest
0 голосов
/ 19 апреля 2020

Я новичок в обещаниях. И я пытаюсь использовать их с функциями запроса mon goose, такими как find() и findById(). Кажется, все работает, но я не уверен, что это правильный путь создания цепочки then. Цель использования обещаний - устранить ад обратного вызова, но способ, которым я создаю цепочку then, очень похож на обратные вызовы. Есть ли лучший способ написать этот маршрут?

router.get('/homehr/employees/new', middleware.isLoggedInAsHR, (req, res) => {
Department.find({})
    .exec()
    .then((allDepartments) => {
        Employee.findById(req.user.employee.id)
        .exec()
        .then((foundEmployee) => {
            res.render('hr/employees/new', {
                departments: allDepartments,
                employee: foundEmployee,
                blogs: allBlogs
            });
        });
    })
    .catch((err) => {
        console.log(err);
        req.flash('error', err.message);
        return res.redirect('back');
    });
});

1 Ответ

1 голос
/ 19 апреля 2020

Кажется, что у ваших маршрутов нет зависимости выборки моделей в последовательности. Таким образом, вы можете написать это более качественно следующим образом:

router.get('/homehr/employees/new', middleware.isLoggedInAsHR, async (req, res) => {
   try{
      const allDepartments = await Department.find({});
      const foundEmployee = await Employee.findById(req.user.employee.id);
      res.render('hr/employees/new', {
          departments: allDepartments,
          employee: foundEmployee,
          blogs: allBlogs
      });
   }catch(err){
       console.log(err);
       req.flash('error', err.message);
       return res.redirect('back');
   }
)};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...