sql >> Databasteknik >  >> NoSQL >> MongoDB

Problem med PUT-begäran med Node.js (express), Angular och MongoDB

Kodfragmentet för att uppdatera befintliga vanor borde fungera bra med några små korrigeringar

  1. Använd alltid return när du kör ett fel
  2. Skicka alltid tillbaka en status. I det här fallet skickar vi 500
  3. Kontrollera att inte hittas och returnera 404
  4. Använd enkelt uppdateringsobjekt. Detta kommer endast att uppdatera fält som finns i uppdateringsobjektet
  5. Mongodb-dokumentet som returneras av monk har ingen sparafunktion, dokumentet måste uppdateras via samlingen
  6. Kontrollera om begäran har en text och skicka 400 - Bad Request

Du kan skicka ett objekt-id som hex eller ObjectId till findById som sagt i Monk docs .

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

Koden ovan kan förenklas ytterligare genom att använda findAndModify funktion av Monk.



  1. Returnera uppdaterad samling med Mongoose

  2. $redis global variabel med rubin på skenor

  3. Mongoose - find():objekt i sökalternativen fungerar inte

  4. Hur exporterar man ett objekt som bara blir tillgängligt i en asynkron återuppringning?