$save()上的$resource抛出TypeError:Object#<g>没有方法'推'

$resource on $save() throws TypeError: Object #<g> has no method 'push'

本文关键字:lt 有方法 gt Object# save 上的 resource TypeError 抛出      更新时间:2023-09-26

资源工厂:

.factory('WorkerRepository', function($resource){
    return $resource('workers/:id', {id:'@id'});
})

控制器:

.controller('ListController', function($scope, WorkerRepository){
    var workers = WorkerRepository.query(function(){
        $scope.workers = workers;
    });
    $scope.worker = {nameSurname: 'Peter', email: "test@gmail.com", phone: 600100200};
    $scope.add = function() {
        var worker = new WorkerRepository(this.worker);
        worker.$save();
    };
})

当执行$scope.add方法时,脚本抛出TypeError: Object #<g> has no method 'push'错误。如果我正确理解$resource,那么默认情况下$save方法只提供'save': {method:'POST'},,因此没有isArray: true。那么为什么我会出现这个错误呢?

显然,错误出现在我的后端REST控制器中(感谢@Stewie的提示!)-我没有将POST方法链接到操作,所以$save()方法调用了负责query()的操作,它确实返回了一个对象数组。

曾:

query() -> GET  /workers -> return array of workers
save()  -> POST /workers -> return array of workers

后端控制器重构后:

query() -> GET  /workers -> return array of workers
save()  -> POST /workers -> return created worker