2016-06-20 188 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; –