预期的响应包含一个对象,但得到了一个GET动作的数组

时间:2015-04-01 13:46:12

标签: javascript angularjs node.js angular-services

我收到此错误“Error: [$resource:badcfg] Error in resource configuration for action 'get'. Expected response to contain an object but got an array

我不知道如何解决它。我有这项服务

angular.module('messages').factory('Messages', ['$resource',
    function ($resource) {
        return $resource('api/messages/:username', {
            username: '@username'
        });
    }]);

这在控制器中:

    $scope.findOne = function () {
        $scope.messages = Messages.get({
            username: $routeParams.username
        });

        console.log($scope.messages);
    };

对于这条路线我在API控制器中有这个

exports.read = function (req, res) {
    res.json(req.message);
};

我知道我必须使用$ resource action isArray = true,但我不知道在哪里放它。我试着做这样的事情:

angular.module('messages').factory('Messages', ['$resource',
    function ($resource) {
        return $resource('api/messages/:username', {
            username: '@username'
        }, 
            {'query': {method: 'GET', isArray: true}});
    }]);

但没有结果,但仍然是同样的错误。

3 个答案:

答案 0 :(得分:4)

在您的控制器中:

$scope.findOne = function () {
        $scope.messages = Messages.query({
            username: $routeParams.username
        });

        console.log($scope.messages);
    };

query而不是get,应该解决它。

答案 1 :(得分:3)

使用Messages.query(...)代替方法get()

答案 2 :(得分:1)

您所做的是正确的,但您可以使用刚刚创建的方法('查询'),因此调用将如下所示:

$scope.findOne = function () {
    Messages.query({
        username: $routeParams.username
    }).$promise.then(function (response) {
        $scope.messages = response;
        console.log($scope.messages);
    });

};