Le fragment de code pour mettre à jour les habitudes existantes devrait fonctionner correctement avec quelques petites corrections
- Lors de l'exécution d'une erreur, utilisez toujours
return
- Toujours renvoyer un statut. Dans ce cas, nous enverrons 500
- Vérifier introuvable et renvoyer 404
- Utilisez un objet de mise à jour simple. Cela ne mettra à jour que les champs contenus dans l'objet de mise à jour
- Le document mongodb renvoyé par monk n'a pas de fonction de sauvegarde, le document doit être mis à jour via la collection
- Vérifiez si la requête a un corps et envoyez 400 - Bad Request
Vous pouvez passer un identifiant d'objet en tant qu'hexadécimal ou ObjectId à findById
comme indiqué dans la documentation Monk
.
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);
});
});
});
Le code ci-dessus peut être encore simplifié en utilisant le findAndModify
fonction de Moine.