El fragmento de código para actualizar los hábitos existentes debería funcionar bien con algunas pequeñas correcciones
- Cuando se ejecuta en un error siempre use
return
- Siempre devuelve un estado. En este caso enviaremos 500
- Verifique que no se encuentre y devuelva 404
- Utilice un objeto de actualización simple. Esto solo actualizará los campos contenidos en el objeto de actualización
- El documento mongodb devuelto por el monje no tiene función de guardado, el documento debe actualizarse a través de la colección
- Compruebe si la solicitud tiene un cuerpo y envíe 400 - Solicitud incorrecta
Puede pasar una identificación de objeto como hexadecimal u ObjectId a findById
como se indica en los documentos de 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);
});
});
});
El código anterior se puede simplificar aún más usando findAndModify
función de monje.