在NodeJs中使用findOne()时发生UnhandledPromiseRejectionWarning

时间:2019-03-05 00:47:57

标签: node.js

我正在一个项目中,如果课程ID不存在,此刻此时必须重定向用户。 这是代码:

router.get('/taller/:id', (req, res) => {
  let tallerId = req.params.id;
  Taller.findOne({_id: tallerId}).then(taller => {
    if(taller) {
      res.render('taller');
    } else {
      res.redirect('/dashboard');
    }
  });
});

这个想法是,如果在参数中传递的id实际上存在于Talleres集合中,则呈现较高的视图。但是,如果不是,则应将用户重定向到仪表板。

运行具有无效ID的代码时,我得到:

  

UnhandledPromiseRejectionWarning:CastError:对于路径“ _id”,模型“ Taller”的值“ 5c7d9da0567a653a40295bc}”的对象ID转换失败

在此先感谢您的帮助。 汤姆。

1 个答案:

答案 0 :(得分:0)

您没有定义catch块,所以拒绝(即错误)无法处理,请尝试以下代码

router.get('/taller/:id', (req, res) => {
  let tallerId = req.params.id;
  Taller.findOne({_id: tallerId}).then(taller => {
    if(taller) {
      res.render('taller');
    } else {
      res.redirect('/dashboard')
    }
  });
}).catch(err=>{console.log(err)});