Il frammento di codice per aggiornare le abitudini esistenti dovrebbe funzionare correttamente con alcune piccole correzioni
- Quando si esegue un errore, utilizzare sempre
return
- Invia sempre uno stato indietro. In questo caso invieremo 500
- Cerca non trovato e restituisci 404
- Usa un semplice oggetto di aggiornamento. Questo aggiornerà solo i campi contenuti nell'oggetto di aggiornamento
- Il documento mongodb restituito dal monaco non ha funzione di salvataggio, il documento deve essere aggiornato tramite la raccolta
- Verifica se la richiesta ha un corpo e invia 400 - Richiesta non valida
Puoi passare un ID oggetto come esadecimale o ObjectId a findById
come affermato nei documenti del Monaco
.
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);
});
});
});
Il codice sopra può essere ulteriormente semplificato utilizzando findAndModify
funzione del Monaco.