angular resource - $resource:badcfg

angular resource - $resource:badcfg

本文关键字:resource badcfg angular      更新时间:2023-09-26

我的角度抛出

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

我不知道其中哪一个不能正常工作,也不知道如何检查。我是刚接触角和节点的,我在这方面花了72个多小时,所以如果有人能告诉我如何解决这个问题,那将是令人惊叹的!除此之外,我设法归还了所有的学校,一所基于给定身份证的学校也不错,但基于城市的归还学校失败了。

编辑:

如果我只是把城市的名字放在像这样的查找功能中

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

它有效,但如果我使用req.params.reqCity,它就不起作用。我不明白为什么它不起作用,似乎req.params.reqCity返回了一些不同的东西,而不是给定的城市名称。尝试仅使用.ToArray而不是.exc,但它无法再次工作。不知道req.params.reqCity返回了什么,仍然不知道如何解决这个问题。

试试这种方法,它应该会起作用。除了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;
                });
    });