2013-12-02 5 views
5

Я полный нуб относительно углового, просто просматривая учебное пособие по кодовым школам, и я ударил свое первое препятствие.

Я получаю Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object

Вот мой код:

var bulletinApp = angular.module('bulletinApp', ['ngResource']); 

bulletinApp.controller('PostsController', ['$scope', 'Post', function($scope, Post) { 
    $scope.heading = 'Welcome'; 
    $scope.posts = Post.query(); 

    $scope.newPost = { 
     title: 'Test Post' 
    } 

}]); 

bulletinApp.factory('Post', ['$resource', function($resource) { 
    return $resource('/posts'); 
}]); 

Я нашел ответ здесь: Error in resource configuration while using $resource.query() function with AngularJS/Rails

Это говорит, что я должен добавить это к моей декларации ресурсов:

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

Проб lem being Я понятия не имею, где я должен добавить это, или даже если это проблема, которую я испытываю?

EDIT:

bulletinApp.factory('Post', ['$resource', function($resource) { 
    return $resource('/posts', {'query': {method: 'GET', isArray: false}}); 
}]); 

После этого я все еще получаю ошибку. Кроме того, в учебнике не было необходимости в этом, и я следовал за ним в значительной степени с тройником, почему бы метод get получить объект вместо массива?

+0

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

+0

Спасибо, просто читал его, считая, что вы можете проверить мое редактирование, чтобы убедиться, что я добавил его правильно? – Melbourne2991

+0

Возможный дубликат [Angular Js. Как исправить ошибку: \ [$ resource: badcfg \] Ошибка в настройке ресурсов. Ожидаемый ответ содержать массив, но получил объект?] (Http://stackoverflow.com/questions/20041306/angular-js-how-fix-error-resourcebadcfg-error-in-resource-configuration-e) – Stewie

ответ

16

Добавить {} после '/posts'.

bulletinApp.factory('Post', ['$resource', function($resource) { 
    return $resource('/posts', {}, {'query': {method: 'GET', isArray: false}}); 
}]); 

Подробнее см. this post.

6

Результат «Get» - массив или просто объект? Если это массив, установите IsArray = верно, иначе установить IsArray = ложь, как было сказано выше

bulletinApp.factory('Post', ['$resource', function($resource) { 
return $resource('/posts', {}, {'query': {method: 'GET', isArray: false/*true*/}}); 
}]); 

парень И внимание IsArray отличается с IsArray. Или, если вы получили ваши данные по JSON, пожалуйста, добавьте * .json, как URL

0

Следующая строка сообщения об ошибке в консоли является URL более полного описания ошибки:

Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an object but got an array 
http://errors.angularjs.org/1.2.28/$resource/badcfg?p0=object&p1=array 

В соответствии с linked page либо ваш сервер не возвращает то, что вы думаете, либо вам нужно указать $ resource, чтобы ожидать массив с сервера.

Смежные вопросы

 Смежные вопросы