Angularjs CRUD删除问题(在DELETE方法中调用GET)

时间:2016-10-12 05:45:59

标签: javascript angularjs

我正在尝试使用此link

之后的angularjs客户端来使用我的春季休息服务

创建,更新和阅读部件正在运行。当我尝试删除时,它显示此错误。

  

错误:[$ resource:badcfg]操作的资源配置出错   get。包含一个对象但得到一个数组的预期响应   (请求:获取http://localhost:8080/SpringRestExample/employee

为什么我在DELETE方法中获取GET请求?

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

      }]);

1 个答案:

答案 0 :(得分:1)

您的问题可能是在删除员工之前致电Employee.get({employeeId:identity}, ...)。这将在删除之前加载员工,它将在'http://localhost:8080/SpringRestExample/employee/:id'上执行GET请求。

要使此查询正常运行,您需要提供尚未完成的id,因此可能只是遗漏了该部分网址。您提供了employeeId,它仅用于将id参数映射到Employee对象。尝试使用{id: identity}替换上面的查询。