2016-06-12 10 views
2

Ich schreibe Nodejs Rest API. Ich habe Probleme mit meiner Löschfunktion. Das ist mein HTML-Code:Nodejs Rest API löschen Funktion

<tr ng-repeat="row in displayedCollection"> 
    <td>{{row.FirstNameAuthor}}</td> 
    <td>{{row.LastNameAuthor}}</td> 
    <td> 
    <button type="button" ng-click="deleteWriter(row)" class="btn btn-sm btn-danger"> 
    </button> 
    </td> 
</tr> 

Das ist mein core.js Code:

$scope.deleteWriter = function (row) { 
    $http.delete('/writer', $scope.row) 
      .error(function (data) { 
      console.log('Error: ' + data); 
      }); 
    }; 

Das ist mein server.js Code:

app.delete('/writer', function (req, res) { 
    var reqBody = ''; 

    req.on("data", function (data) { 
     reqBody += data; 
     if (reqBody.length > 1e7) {//10MB 
      httpMsgs.show404(req, res); 
     } 
    }); 
    req.on("end", function() { 
     wr.delete(req, res, reqBody); 
    }); 
}) 

Dann benutze ich Funktion wr.delete zu entfernen Aufzeichnung von der Datenbank.

exports.delete = function (req, resp, reqBody) { 

try { 
    if (!reqBody) throw new Error("Input is nod valid"); 
    var data = JSON.parse(reqBody); 
    if (data) { 
     if (!data.idRegisterIssueContract) throw new Error("No such number"); 
     var sql = "DELETE FROM registerissuecontract "; 
     sql += " WHERE idRegisterIssueContract =" + data.idRegisterIssueContract; 
     db.executeSQL(sql, function (data, err) { 
      if (err) { 
       httpMsgs.show500(req, resp, err); 
      } 
      else { 
       httpMsgs.send200(req, resp); 
      } 

     }); 
    } 
    else { 
     throw new Error("Input is nod valid"); 
    } 
} 
catch (ex) { 
    httpMsgs.show500(req, resp, ex); 
} 
}; 

Aber es funktioniert nicht, weil reqBody leer ist.

Wie kann ich es reparieren?

+0

Welcher Fehler? Wo ist wr definiert? – Thalaivar

+0

Versuchen Sie einen Datensatz aus einer Datenbank zu löschen? Hast du in Betracht gezogen, Sequelize zu verwenden? – Roysh

+0

Ja, ich versuche einen Datensatz aus einer Datenbank zu löschen. Aber ich denke, dass ich in core.js etwas falsch gemacht habe. – DzouSi

Antwort

1

Sie können eine ID in Ihre Route löschen, wie unten passieren:

Client-Seite:

$http.delete('/writer/' + id) 
     .success(function(data) { 
     console.log('Success: ' + data); 
     }) 
     .error(function(data) { 
      console.log('Error: ' + data); 
     }); 

Server-Seite:

app.delete('/writer/:id', function (req, res) { 

    var id = req.params.id; 

    //DELETE YOUR RECORD WITH YOUR PARAM. 

    return res.status(200); 
} 

Sag mir, wenn ich Ich habe deine Frage beantwortet.

+0

Ich habe dies zu meinem Code hinzugefügt, aber meine ID ist heiß definiert in app.delete – DzouSi

+0

Ich habe meinen Beitrag aktualisiert, sollte es jetzt korrekt funktionieren. –

+0

Danke, es funktioniert – DzouSi