sql >> Databáze >  >> NoSQL >> MongoDB

Problém s požadavkem PUT pomocí Node.js (express), Angular a MongoDB

Fragment kódu pro aktualizaci stávajících návyků by měl fungovat dobře s malými opravami

  1. Při spuštění v chybě vždy použijte return
  2. Vždy odešlete stav zpět. V tomto případě pošleme 500
  3. Zkontrolujte, zda nebyl nalezen, a vraťte 404
  4. Použijte jednoduchý objekt aktualizace. Tím se aktualizují pouze pole obsažená v objektu aktualizace
  5. Dokument mongodb vrácený monkem nemá žádnou funkci ukládání, dokument je třeba aktualizovat prostřednictvím kolekce
  6. Zkontrolujte, zda má žádost tělo, a odešlete 400 – špatný požadavek

ID objektu můžete předat jako hexadecimální nebo ObjectId do findById jak je uvedeno v 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);
        });
    });
});

Výše uvedený kód lze dále zjednodušit pomocí findAndModify funkce Monka.



  1. Dynamické rychlé třídění v Mongo pro jednoduchou hodnotu nebo seznam

  2. Objekty nejsou platné jako podřízená data React z MongoDB

  3. jak spravovat pole _id při použití POCO s ovladačem mongodb c#

  4. Proč nemohu ladit kód v asynchronní metodě?