既存の習慣を更新するためのコードフラグメントは、いくつかの小さな修正を加えるだけで問題なく機能するはずです
- エラーが発生した場合は、常に
return
を使用してください - 常にステータスを送り返します。この場合、500を送信します
- 見つからないことを確認し、404を返します
- 単純な更新オブジェクトを使用します。これにより、更新オブジェクトに含まれるフィールドのみが更新されます
- 僧侶から返されたmongodbドキュメントには保存機能がないため、コレクションを介してドキュメントを更新する必要があります
- リクエストに本文があるかどうかを確認し、400-不正なリクエストを送信します
オブジェクトIDを16進数またはObjectIdとしてfindById
に渡すことができます 僧侶のドキュメントで述べられているように
。
router.put('/api/habits/:habit_id', function(req, rest){
var db = req.db;
var collection = db.get('habits');
if(!req.body) { return res.send(400); } // 6
collection.findById(req.params.habit_id, function(e,data){
if(e) { return res.send(500, e); } // 1, 2
if(!data) { return res.send(404); } // 3
var update = { title : req.body.title, count : req.body.count }; // 4
collection.updateById(req.params.habit_id, update, function(err) { // 5
if(err) {
return res.send(500, err);
}
res.json(data);
});
});
});
上記のコードは、findAndModify
を使用してさらに簡略化できます。 僧侶の機能。