2017-05-10 2 views
0

Ich benutze Angular4, Express 4.15 und Knoten 7.9. Meine GET, POST, PUT Anfragen funktionieren ganz gut .. aber ich bin mir nicht sicher, warum die Löschfunktion nicht funktioniert. Ich benutzte Mlab für meinen Mongodb und Mongojs, um die Verbindung herzustellen.MEAN stack DELETE funktioniert nicht - Was ist electionId?

Bearbeiten - Auf Postman, tun i Anfrage lösche ich bekommen ein electionId, die ich nicht verstehen (siehe unten)

Ich sehe keine Fehler, und ich erhalte einen 200-Antwortcode, wenn i Klicken Sie auf die Schaltfläche Löschen. Hier enter image description here

ist die Front-End -

<td><input (click)="deleteCandidate(candidate)" type="button" class="btn btn-danger pull-right" value="Delete"></td> 

Die Funktion in meiner Komponente -

deleteCandidate(candidate){ 
    var candidates = this.candidates; 

    this._candidateService.removeCandidate(candidate._id) 
    .map(res => res.json()) 
    .subscribe(data => { 
    if(data.n == 1){ 
     for(var i = 0; i < candidates.length; i++){ 
     if(candidates[i]._id == candidate._id){ 
      candidates.splice(i, 1); 
     } 
     } 
    } 
    }); 
} 

und die entsprechenden Service -

removeCandidate(id) 
    { 
     return this._http.delete('/api/v1/candidate/'+id); 
    } 

Und hier ist der Weg für ExpressJS (Ich habe Mongojs verwendet) -

// Delete a candidate 
router.delete('/candidate/:id', function(req, res, next) { 
    db.candidates.remove({ 
     _id: mongojs.ObjectId(req.param.id) 
    }, '', function(err, result) { 
      if(err){ 
      res.send(err); 
     } 
     else { 
      res.json(result); 
     } 
    }); 
}); 

Bearbeiten - Gerade versucht, eine DELETE-Anfrage von Postman und es ist nicht erfolgreich. Ich bekomme die folgende Antwort -

{ 
    "ok": 1, 
    "n": 0, 
    "opTime": { 
    "ts": "6418646173661265921", 
    "t": 1 
    }, 
    "electionId": "7fffffff0000000000000001" 
} 

Ihre Hilfe ist dankbar, danke!

+0

"Nicht funktioniert" ist zu vage ... was funktioniert nicht? Wo wird der Artikel nicht gelöscht? Auf Vorder- oder Rückseite? – developer033

+0

@ developer033, an beiden Enden. Ich habe gerade nach Postman gecheckt und kann es auch nicht von dort löschen. Dies könnte eine Backend-Sache sein. Dies ist die Antwort, die ich von Postbote bekommen - { "ok": 1, "n": 0, "OPTIME": { "ts": "6418646173661265921", "t": 1 }, " electionId ":" 7fffffff0000000000000001 " } – codemode

Antwort

0

Die "n": 0 in der Antwort bedeutet, dass die Datenbankabfrage keine Dokumente gefunden hat. In diesem Fall ist es wahrscheinlich, weil Sie req.param.id anstelle von req.params.id geschrieben haben.