Подтвердить что ты не робот

Ошибка: [$ resource: badcfg] Ошибка в настройке ресурсов. Ожидаемый ответ содержать массив, но получил объект?

Как исправить ошибку:

[$ resource: badcfg] Ошибка в конфигурации ресурсов. Ожидаемый ответ содержать массив, но получить объект?

//Сервис

   angular.module('admin.services', ['ngResource'])       
    // GET TASK LIST ACTIVITY
    .factory('getTaskService', function($resource) {
        return $resource('../rest/api.php?method=getTask&q=*',{ 'get':    {method:'GET'}});
    })

//Контроллер

$scope.getTask = getTaskService.query(function (response) {
    angular.forEach(response, function (item) {
        if (item.numFound > 0) {
            for(var i = 0; i < item.numFound; i++) {

                $scope.getTasks[i] = item.docs[i];

            }

        }
    });

});
4b9b3361

Ответ 1

Прежде всего, вы должны настроить $resource по-разному: без параметров запроса в URL-адресе. Параметры запроса по умолчанию могут передаваться как свойства второго параметра в resource(url, paramDefaults, actions). Следует также упомянуть, что вы настраиваете метод ресурса get и используете query.

Сервис

angular.module('admin.services', ['ngResource'])       
  // GET TASK LIST ACTIVITY
  .factory('getTaskService', function($resource) {
    return $resource(
      '../rest/api.php',
      { method: 'getTask', q: '*' }, // Query parameters
      {'query': { method: 'GET' }}
    );
  })

Documentation

http://docs.angularjs.org/api/ngResource.$resource

Ответ 2

Кроме того, если ваша служба отправляет объект вместо массива, добавьте в его объявление isArray: false.

'query': {method: 'GET', isArray: false }

Ответ 3

$resource("../rest/api"}).get(); вернуть объект.

$resource("../rest/api").query(); вернуть массив.

то вы должны использовать: ...       return $resource('../rest/api.php?method=getTask&q=*).query();

Ответ 4

Чтобы обрабатывать массивы с помощью службы $resource, она предложила использовать метод запроса. Как вы можете видеть ниже, метод запроса построен для обработки массивов.

    { 'get':    {method:'GET'},
      'save':   {method:'POST'},
      'query':  {method:'GET', isArray:true},
      'remove': {method:'DELETE'},
      'delete': {method:'DELETE'} 
   };

Пользователь $resource("apiUrl").query();

Ответ 5

Убедитесь, что вы также отправляете правильные параметры. Это случилось со мной после перехода на UI-Router.

Чтобы исправить это, я изменил $routeParams, чтобы использовать $stateParams в моем контроллере. Основная проблема заключалась в том, что $stateParams больше не отправлял надлежащий параметр ресурсу.