Kodefragmentet til at opdatere eksisterende vaner burde fungere fint med nogle små rettelser
- Når du kører en fejl, skal du altid bruge
return
- Send altid en status tilbage. I dette tilfælde sender vi 500
- Sjeg for ikke fundet, og returner 404
- Brug simpelt opdateringsobjekt. Dette vil kun opdatere felter indeholdt i opdateringsobjektet
- Mongodb-dokumentet, der returneres af munken, har ingen gemmefunktion, dokumentet skal opdateres via samlingen
- Tjek, om anmodningen har en tekst, og send 400 - Dårlig anmodning
Du kan sende et objekt-id som hex eller ObjectId til findById
som anført i Monk-dokumenterne
.
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);
});
});
});
Ovenstående kode kan forenkles yderligere ved at bruge findAndModify
funktion af munk.