Nodejs仍然路由到MongoDB中的删除条目

我用下面的代码删除mongodb中的一个条目

router.delete('/:id', function(req, res) { Student.findByIdAndRemove(req.params.id, function(err, student) { if(err) { console.log(err); return res.redirect('/students/' + req.params.id); } console.log('Deleted student.'); console.log(student); res.redirect('/students'); }); }); 

删除通过,因为我不再在数据库中看到它; 然而,如果我访问旧的页面/学生/:ID它通过而不是redirect回来,我收到一个错误,因为我试图在空对象上使用方法。

 router.get('/:id', function(req, res) { Student.findById(req.params.id, function(err, foundStudent) { if(err) { console.log(err); return res.redirect('/students'); } res.render('pages/students/show', { student : foundStudent }); }); }); 

我怎样才能知道该ID不再存在?

只有find学生才发送显示。 根据你的逻辑,如果没有错误,它将得到“显示”,因为没有发现是不是错误,所以它会显示。

 router.get('/:id', function(req, res) { Student.findById(req.params.id, function(err, foundStudent) { if(err) { console.log(err); return res.redirect('/students'); } if(foundStudent){ res.render('pages/students/show', { student : foundStudent }); } return res.redirect('/students'); }); });