sql >> Database >  >> NoSQL >> MongoDB

Problemen met PUT-verzoek met Node.js (express), Angular en MongoDB

Het codefragment om bestaande gewoonten bij te werken zou prima moeten werken met enkele kleine correcties

  1. Als een fout optreedt, gebruik dan altijd return
  2. Stuur altijd een status terug. In dit geval sturen we 500
  3. Controleer op niet gevonden en retourneer 404
  4. Gebruik een eenvoudig update-object. Hiermee worden alleen velden in het update-object bijgewerkt
  5. Het mongodb-document dat door monnik is geretourneerd, heeft geen opslagfunctie, het document moet worden bijgewerkt via de verzameling
  6. Controleer of het verzoek een hoofdtekst heeft en stuur 400 - Bad Request

U kunt een object-ID als hex of ObjectId doorgeven aan findById zoals vermeld in de Monk-documenten .

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);
        });
    });
});

De bovenstaande code kan verder worden vereenvoudigd met behulp van de findAndModify functie van monnik.



  1. Hoe kan ik elemMatch in array doen met mongodb?

  2. Rails g werkt niet voor mongoïde commando's

  3. Redis-strings versus Redis-hashes om JSON weer te geven:efficiëntie?

  4. Hoe bel ik mongodb in mijn kaart / reduceer-functies? Is het een goede gewoonte?