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

use*_*666 3 mongodb node.js angularjs

我是MEAN堆栈开发的新手,昨天才开始.我试图通过使用链接到服务器端控制器的资源调用从数据库中恢复数据.但我收到以下控制台错误"错误:[$ resource:badcfg]资源配置中的操作错误query.预期的响应包含一个数组,但得到一个对象"

角度控制器:

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");

        }


    });
Run Code Online (Sandbox Code Playgroud)

Server.js:

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

app.get('/api/articles', articlesController.list);
app.post('/api/articles', articlesController.create);
Run Code Online (Sandbox Code Playgroud)

服务器端控制器:

var article = require('../models/articleModel');

module.exports.create = function(req, res){

    var art = new article(req.body);
    art.save( function (err, result){

        res.json(result);

    });

}


module.exports.list = function(req, res){

    article.find({}, function (err, results){

        res.json(results);

    });

}
Run Code Online (Sandbox Code Playgroud)

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

小智 9

错误是因为

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

这里的articles.query需要一个数组.但不是一个对象.

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

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

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

请参阅angularJS文档