错误:[$ resource:badcfg]操作`query`的资源配置错误。预期的响应包含一个数组但得到一个对象

时间:2015-04-25 22:34:37

标签: angularjs node.js mongodb

我对MEAN堆栈开发很新,并且昨天才开始。我试图通过使用链接到服务器端控制器的资源调用从数据库中恢复数据。但是我收到以下控制台错误"错误:[$ resource:badcfg]操作Exception in thread "Thread-0" java.lang.NoClassDefFoundError: Models/PostObject at server.Database.getPosts(Database.java:101) at server.ServerThread.run(ServerThread.java:47) Caused by: java.lang.ClassNotFoundException: Models.PostObject at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 more 的资源配置出错。预期的响应包含一个数组,但得到一个对象"

角度控制器:

query

Server.js:

app.
    controller('ArticleCtrl',  function($scope, $location, $resource){

        var articles = $resource('/api/articles');

        articles.query(function(result){

            console.log(result);

        });

        $scope.addnew = function(){

            $location.path("/administrationarea/articles/newarticle");

        }


    });

服务器端控制器:

articlesController = require('./server/controller/article-controller');

app.get('/api/articles', articlesController.list);
app.post('/api/articles', articlesController.create);

任何人都可以告诉我为什么会发生这种情况并提供解决方案,以便将数据作为数组而不是对象返回。

1 个答案:

答案 0 :(得分:9)

错误是因为

var articles = $resource('api/articles');
articles.query(function(result){
    // here result should be an array.
        console.log(result);
 });

这里的articles.query期望一个数组。但不是一个对象。

如果您的api返回一个对象,那么您应该使用articles.get()。

articles.get(function(result){
   // here result should be an object but not array
        console.log(result);
    });

$ resource.query()用于从REST API获取数组,$ resource.get()用于从REST API获取对象。但在这两种情况下,请求类型(/ method)都只是'get'。

请参阅angularJS documentation