2016-08-18 47 views
1

我用下面的代码删除MongoDB中的条目仍的NodeJS路由到删除的条目在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它会经历而不是重定向回来,我收到一个错误,因为我试图在空对象上使用方法。

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不再存在?

回答

3

仅当找到学生时发送才显示。根据你的逻辑,如果没有错误,它会'显示'为未找到不是错误,所以它会显示。

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'); 
    }); 
}); 
+0

哇愚蠢的错误..只是好奇,但为什么它,如果我进入一个以前的ID进入/学生/:ID它经历,但如果我只是尝试一些随机喜欢asdfashd它不? – jbauer

+1

asdfashd无效monodb ID。 MongoDB的ID是时间戳和其他元素的组合。也许mongodb在传递之前验证一个id。 – owaishanif786