2016-06-20 150 views
2

拥有此代码。想chanche chek领域。PUT方法猫鼬模型

apiRoutes.put('/intake/:id', function(req, res) { 
     var id = req.params.id; 
     Intake.findById(id, function(err, intake) { 
      if (err)res.send(err); 
      if (intake.check == false) {intake.check = true;} 
      else {intake.check = false;} 
      intake.save(function(err) { 
      if (err) {return res.json({success: false, msg: 'Error'});} 
      res.json({success: true, msg: 'Successful update check state.'}); 
     }); 
     }) 
    }); 

收到此错误 如果(检查=假的!){intake.check = FALSE;} ^

的ReferenceError:检查没有定义

回答

1

你可能无法找到与进id。您应该首先检查是否有任何intake归还。围绕它包装一个if(intake)以捕获该异常。

只有在出现实际错误时才会返回错误。如果未找到摄入量,则findById将仅返回一个空物体{}。所以,如果你尝试检查一个空对象的字段,你会得到一个错误。

尝试:

Intake.findById(id, function(err, intake) { 
     if (err) {res.send(err); return;} 
     if (intake) { 
     if (intake.check == false) {intake.check = true;} 
     else {intake.check = false;} 
     } else { 
     res.send("No intake found."); 
     } 
+1

这将发送两个反应回来的时候'定义err'(原代码不一样:它不从函数返回时发生了错误和错误响应发送)。 – robertklep

+0

好点@robertklep,编辑 –

+0

用于改变检查状态的if ... else块是不必要的... intake.check =!intake.check; –