【问题标题】:angular resource - $resource:badcfg角度资源 - $resource:badcfg
【发布时间】:2015-04-17 02:31:50
【问题描述】:

我的角度把我扔了

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

我不知道为什么会这样。我有一个学校的数据库,每所学校都有一个城市财产。我正在尝试获取给定城市的所有学校。 在服务器上,我的控制器有一个功能应该可以做到这一点:

getSchoolByData: function(req, res, next) {
    School.find({city: req.params.reqCity}).exec(function (err, collection) {
        if (err) {
            console.log("Could not load desired school: " + err);
        }
        res.send(collection);

    });
}

在我的客户端,我有一个资源和另一个控制器: 资源:

app.factory('SearchSchoolResource', function($resource) {
    var SearchSchoolResource = $resource('/schoolSearchResult/:reqCity', {city: 'reqCity'}, { update: {method: 'PUT', isArray: false}});
    return SearchSchoolResource;
}); 

控制器:

app.controller('SearchSchoolCtrl', function($scope, $routeParams, SearchSchoolResource) {
    $scope.schools = SearchSchoolResource.query({city: $routeParams.reqCity});
});

我不知道其中哪一个无法正常工作,也不知道如何检查。我是 angular 和 node 的新手,我花了超过 72 个小时在这上面,所以如果有人能告诉我如何解决这个问题,那就太棒了! 除此之外,我设法返回了所有学校,并且基于给定 id 的单一学校很好,但基于城市返回学校失败。

编辑:

如果我只是将城市名称放在查找功能中

... find({city: 'name'}) ...

它有效,但如果我使用 req.params.reqCity 则无效。我不知道为什么它不起作用,似乎 req.params.reqCity 正在返回不同的东西而不是给定的城市名称。尝试仅使用 .ToArray 而不是 .exec 并且它不再起作用。无法弄清楚 req.params.reqCity 返回什么,仍然无法弄清楚如何解决这个问题。

【问题讨论】:

  • 我试过了。不过我可能理解错了。我写道:pastebin.com/KGfST9n4,但它没有用。它停止给我错误,但它在第 8 页上什么也没显示,我认为它甚至没有启动 SearchSchoolCtrl 代码,因为我试图在那里打印一些没有打印的东西。我尝试更改我的 Angular 应用程序中的路径,并从 /schoolSearchResult/:reqCity 表达到 /schoolSearchResult 并且它没有工作。

标签: javascript angularjs node.js express resources


【解决方案1】:

试试这个方法,应该可以的。除了 get 我还添加了其他操作的语法。

服务:

 app.factory('SchoolService',function($resource){
            return $resource('/schoolSearchResult/:reqCity', 
            {
                reqCity: '@reqCity'
            },
            {
                'update': { method:'PUT' }
            },
            {
                'get': { method: 'GET', isArray: false }
            },
            {
                'delete': { method: 'DELETE'}
            }
        );
        });

控制器:

app.controller('SearchSchoolCtrl', function($scope, $routeParams, SchoolService) {
        var schoolService = new SchoolService();
        schoolService.$get({reqCity : $routeParams.reqCity},function(result){
                    $scope.schools = result;
                });
    });

【讨论】:

  • 刚刚尝试了你的代码,但由于某种原因它没有出现在页面上,当我记录结果时,它给了我一个包含页面 html puu.sh/gq2yC/42b0d09cf4.png 的数组
  • 你检查过你的 API,它返回的结果是否正确?
  • 我在路由中发现了一个错误,所以现在它没有给我之前的结果。另一方面,当我使用您的代码时,它显示“预期响应包含一个对象但得到一个数组。”,但是当我更改为旧控制器时,它显示“预期响应包含一个数组但得到一个对象。”,其他而不是 $scope.schools 是一个未解决的承诺。我检查了 mongodb 的 find 的 sintax,看起来是对的,我尝试删除 {} 中的参数,但没有任何改变。
猜你喜欢
  • 2017-07-19
  • 2016-05-10
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 2015-09-02
相关资源
最近更新 更多