O fragmento de código para atualizar os hábitos existentes deve funcionar bem com algumas pequenas correções
- Ao executar em um erro sempre use
return
- Sempre envie um status de volta. Nesse caso, enviaremos 500
- Verifique se não foi encontrado e retorne 404
- Use um objeto de atualização simples. Isso atualizará apenas os campos contidos no objeto de atualização
- O documento mongodb retornado por monk não tem função de salvar, o documento precisa ser atualizado por meio da coleção
- Verifique se a solicitação tem corpo e envie 400 - Solicitação inválida
Você pode passar um ID de objeto como hexadecimal ou ObjectId para
findById
conforme declarado nos documentos do 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);
});
});
});
O código acima pode ser simplificado ainda mais usando o
findAndModify
função de monge.