Erreur: Erreur dans la configuration de la ressource. Réponse attendue pour contenir un tableau mais un object?

Comment corriger l’erreur:

[$ resource: badcfg] Erreur dans la configuration de la ressource. Réponse attendue pour contenir un tableau mais un object?

// Un service

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

// Manette

 $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]; } } }); }); 

Tout d’abord, vous devez configurer $resource de manière différente: sans parameters de requête dans l’URL. Les parameters de requête par défaut peuvent être transmis en tant que propriétés du second paramètre dans la resource(url, paramDefaults, actions) . Il convient également de mentionner que vous configurez la méthode get de la ressource et utilisez plutôt la query .

Un service

 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

En outre, si votre service envoie un object à la place d’un tableau, ajoutez isArray: false à sa déclaration.

 'query': {method: 'GET', isArray: false } 
 $resource("../rest/api"}).get(); 

renvoie un object.

 $resource("../rest/api").query(); 

renvoie un tableau.

Tu dois utiliser :

 return $resource('../rest/api.php?method=getTask&q=*').query(); 

Pour gérer les tableaux avec le service de ressources $, il est conseillé d’utiliser la méthode de requête. Comme vous pouvez le voir ci-dessous, la méthode de requête est conçue pour gérer les tableaux.

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

User $resource("apiUrl").query();

Assurez-vous d’envoyer également les parameters appropriés. Cela m’est arrivé après le passage à UI-Router.

Pour y remédier, j’ai changé $ routeParams pour utiliser $ stateParams dans mon contrôleur. Le problème principal était que $ stateParams n’envoyait plus de paramètre correct à la ressource.