2016-08-19 3 views
1

Ich frage mich, wie eine 'Anmerkung' von meinem mongoDB in Node.js löschenLöschen 'Anmerkung' in der Sammlung von mongoDB in Node.js Express

Ich bin neu in Node.js, Express und mongoDB. Selbst ...

notesController.js

Ich werde einfach hier mein Code zeigen und lassen, die für sie sprechen:

app.delete('/api/notes/:categoryName/:note', 
    // auth.ensureApiAuthenticated, commented when testing. 
    function(req, res) { 

     var categoryName = req.params.categoryName; 
     var note = req.params.note; 

     data.removeNote(categoryName, note, function(err, notes){ 
      if(err) { 
       res.send(400, err); 
      } 
      else { 
       res.send(200); 
      } 
     }); 
    }); 

index.js von Datenordner:

 data.removeNote = function(categoryName, note, next) { 
    database.getDb(function(err, db){ 
     if(err) { 
      next(err); 
     } 
     else { 
      db.notes.remove({ note: note }, function(err, results) { 
       console.log(results); //not too sure what to do here? 
       next(); 
      }); 
     } 
    }); 
}; 

MongoDB: Dies ist die Notiz, die ich löschen möchte. Nicht programmieren, da das die Kategorie ist.

Ich benutze Fiddler beim Testen und ich bekomme 200 als Statuscode ... Aber es wird nicht aus der DB gelöscht. Bitte helfen Sie! :)

Vielen Dank im Voraus :)

+0

Also, wenn ich Sie richtig verstanden, dann wollen Sie nur das Element innerhalb des Arrays entfernen und nicht das gesamte Dokument nicht wahr? – DAXaholic

+0

Ja genau :) Entschuldigung wenn ich unklar war @DAXaholic – oOMelon

Antwort

0

Ich denke, statt

... 
db.notes.remove({ note: note }, function(err, results) { 
    console.log(results); //not too sure what to do here? 
    next(); 
}); 
... 

Sie eher ein update mit $pull, also so etwas wie dieses

... 
db.notes.update({ "notes.note": note }, 
       { $pull: { notes: { note: note } } }, 
       function(err, results) { 

    console.log(results); //not too sure what to do here? 
    next(); 
}); 
... 

verwenden sollten, finden Sie im folgenden GIF Dies veranschaulicht das für Ihr Beispieldokument.
Natürlich müssen Sie sicherstellen, dass note aus den Anfragedaten korrekt eingestellt ist.

enter image description here

+0

Danke! Das hat super funktioniert! Eine Sache noch. Auf dem Client habe ich diesen Winkelcode: $ scope.removeNote = function (note) { $ http.put (notesUrl + '/' + note) .dann (function (result) { $ scope.notes = result. Daten; }, Funktion (err) { console.log (err); }); }; – oOMelon

+0

Es funktioniert, aber es sieht auf der Seite komisch aus, also muss ich es auffrischen. Ich habe eine ähnliche Funktion, wenn ich eine neue einfüge. Wenn ich eine neue einfüge, erscheint die Notiz ohne Seitenaktualisierung. Kann man das auch hier erreichen? @DAXaholic – oOMelon

Verwandte Themen