MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Probleme mit der PUT-Anforderung mit Node.js (Express), Angular und MongoDB

Das Codefragment zum Aktualisieren vorhandener Gewohnheiten sollte mit einigen kleinen Korrekturen problemlos funktionieren

  1. Wenn ein Fehler auftritt, verwenden Sie immer return
  2. Sende immer einen Status zurück. In diesem Fall senden wir 500
  3. Auf nicht gefunden prüfen und 404 zurückgeben
  4. Einfaches Aktualisierungsobjekt verwenden. Dadurch werden nur Felder aktualisiert, die im Aktualisierungsobjekt enthalten sind
  5. Das von Monk zurückgegebene mongodb-Dokument hat keine Speicherfunktion, das Dokument muss über die Sammlung aktualisiert werden
  6. Überprüfen Sie, ob die Anfrage einen Text hat und senden Sie 400 - Bad Request

Sie können eine Objekt-ID als Hex oder ObjectId an findById übergeben wie in der Monk-Dokumentation angegeben .

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

Der obige Code kann weiter vereinfacht werden, indem findAndModify verwendet wird Funktion von Monk.