2016-06-20 9 views
2

このコードをお持ちですか?チェンキーフィールドをチャンスにしたい。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.'}); 
     }); 
     }) 
    }); 

レシーブこのエラー (チェック= falseを!){intake.check =偽;}場合 ^

にReferenceError:チェックが

答えて

1

が定義されていないあなたはそれで摂取を見つけないかもしれませんid。まず、intakeが返されているかどうかを確認する必要があります。その例外をキャッチするには、if(intake)を囲みます。

実際にエラーが発生した場合のみエラーが返されます。摂取量がない場合、findByIdは空のオブジェクト{}を返します。したがって、空のオブジェクトのフィールドをチェックしようとするとエラーが発生します。

試してみてください。エラーが発生しているとエラー応答があるときには、関数から戻りません: `err`は、元のコードは、同じことを(定義されている場合2つの応答を送り返すでしょう

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

送られた)。 – robertklep

+0

良い点@robertklep、編集済み –

+0

チェックステータスを変更するために使用されるif ... elseブロックは必要ありません... intake.check =!intake.check; –