错误: [ $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];


}


}
});


});
103142 次浏览

首先,您应该以不同的方式配置 $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' }}
);
})

文件

Http://docs.angularjs.org/api/ngresource.$resource

此外,如果您的服务发送的是对象而不是数组,则在其声明中添加 IsArray: false

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

返回一个对象。

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

返回一个数组。

你必须使用:

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

请确保您也发送了正确的参数。这发生在我切换到 UI-Router 之后。

为了解决这个问题,我将 $routeParams 更改为在控制器中使用 $stateParams。主要问题是 $stateParams 不再向资源发送适当的参数。

为了使用 $resource 服务处理数组,建议使用 query 方法。如下所示,构建查询方法是为了处理数组。

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

用户 $resource("apiUrl").query();

对于2021年来到这里的任何人来说,这个请求看起来可能是这样的(至少在我们的应用程序中是这样的)

angular.module('load').factory('StateService', ['$resource', 'store', function($resource, store) {
return $resource('/some/url', {}, {
fetchAllStateCodes: {
method: 'GET',
isArray: true,  // Response is an array of objects
headers: {
"Authorization": "Bearer " + store.get("jwt"),
"Content-type": "application/json"
}
}
});
}]);

从所有的好答案,它仍然不明显,对我来说,在哪里放置 isArray标志..。