sql >> Database teknologi >  >> NoSQL >> MongoDB

Problemer med PUT-anmodning ved hjælp af Node.js (express), Angular og MongoDB

Kodefragmentet til at opdatere eksisterende vaner burde fungere fint med nogle små rettelser

  1. Når du kører en fejl, skal du altid bruge return
  2. Send altid en status tilbage. I dette tilfælde sender vi 500
  3. Sjeg for ikke fundet, og returner 404
  4. Brug simpelt opdateringsobjekt. Dette vil kun opdatere felter indeholdt i opdateringsobjektet
  5. Mongodb-dokumentet, der returneres af munken, har ingen gemmefunktion, dokumentet skal opdateres via samlingen
  6. 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.



  1. Mongodb upsert opdaterer kun udvalgte felter, men indsæt alle

  2. Sådan grupperes efter forskellige felter

  3. Hvordan projekterer DBRef på Spring MongoDB Aggregation?

  4. MongoDB:find og findOne med indlejret array-filtrering