2016-10-12 2 views
1

Ich versuche, meine Feder Rest-Dienst AngularJS Client im Anschluss an diese linkAngularJS CRUD Ausgabe löschen (GET in DELETE-Methode genannt)

erstellen, aktualisieren zu konsumieren und lesen Teile arbeiten. Wenn ich versuche zu löschen, wird dieser Fehler angezeigt.

Error: [$resource:badcfg] Error in resource configuration for action get . Expected response to contain an object but got an array (Request: GET http://localhost:8080/SpringRestExample/employee)

Warum bekomme ich GET-Anfrage in DELETE-Methode?

employee_service.js

'use strict'; 

App.factory('Employee', ['$resource', function ($resource) { 
    return $resource(
      'http://localhost:8080/SpringRestExample/employee/:id', 
      {id: '@employeeId'}, 
      { 
       update: { 
         method: 'PUT' 
       } 

      } 
    ); 
}]); 

employee_controller.js

'use strict'; 

App.controller('EmployeeController', ['$scope', 'Employee', function($scope, Employee) { 
      var self = this; 
      self.employee= new Employee(); 

      self.employees=[]; 

      self.fetchAllEmployees = function(){ 
       self.employees = Employee.query(); 
      }; 

      self.createEmployee = function(){ 
       self.employee.$save(function(){ 
        self.fetchAllEmployees(); 
       }); 
      }; 

      self.updateEmployee = function(){ 
       self.employee.$update(function(){ 
        self.fetchAllEmployees(); 
       }); 
      }; 

     self.deleteEmployee = function(identity){ 
      var employee = Employee.get({employeeId:identity}, function() { 
       employee.$delete(function(){ 
         console.log('Deleting employee with id ', identity); 
         self.fetchAllEmployees(); 
        }); 
      }); 
      }; 

      self.fetchAllEmployees(); 

      self.submit = function() { 
       if(self.employee.employeeId==null){ 
        console.log('Saving New Employee', self.employee);  
        self.createEmployee(); 
       }else{ 
        console.log('Updating employee with id ', self.employee.employeeId); 
        self.updateEmployee(); 
        console.log('Employee updated with id ', self.employee.employeeId); 
       } 
       self.reset(); 
      }; 

      self.edit = function(employeeId){ 
       console.log('id to be edited', employeeId); 
       for(var i = 0; i < self.employees.length; i++){ 
        if(self.employees[i].employeeId === employeeId) { 
        self.employee = angular.copy(self.employees[i]); 
        break; 
        } 
       } 
      }; 

      self.remove = function(employeeId){ 
       console.log('id to be deleted', employeeId); 
       if(self.employee.employeeId === employeeId) {//If it is the one shown on screen, reset screen 
       self.reset(); 
       } 
       self.deleteEmployee(employeeId); 
      }; 


      self.reset = function(){ 
       self.employee= new Employee(); 
       $scope.myForm.$setPristine(); //reset Form 
      }; 

     }]); 
+0

bitte jemand mir helfen. – user3785322

+0

Klingt, als ob Ihr Backend ein Array für die '.get' Anfrage zurückgibt. Nichts mit "DELETE" zu tun. Überprüfen Sie die Antwortdaten für "http: // localhost: 8080/SpringRestExample/employee/someEmployeeId" – Phil

+0

@Phil Vielen Dank für den Vorschlag. – user3785322

Antwort

1

Ihr Problem könnte sein, wenn Sie Employee.get({employeeId:identity}, ...) vor dem Löschen des Mitarbeiters nennen. Dies lädt den Mitarbeiter vor dem Löschen und es wird eine GET-Anfrage an .

Damit diese Abfrage ordnungsgemäß funktioniert, müssen Sie id angeben, was Sie nicht getan haben, sodass dieser Teil der URL möglicherweise weggelassen wird. Sie haben employeeId angegeben, das nur zum Zuordnen des ID-Parameters zu den Objekten Employee verwendet wird. Versuchen Sie, die obige Abfrage durch {id: identity} zu ersetzen.

+0

Es funktioniert. Danke für die Erklärung. – user3785322

+0

@Phil also habe ich ein anderes Problem, wie Sie im ersten Kommentar vorgeschlagen? – user3785322

+1

@Phil Ich denke, das ist nur für die Zuordnung zu der 'Employee.employeeId' -Eigenschaft. – lyschoening

Verwandte Themen