预期响应包含一个对象,但得到一个用于 GET 操作的数组

Expected response to contain an object but got an array for GET action

我收到此错误“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}});
    }]);

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

在您的控制器中:

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

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

query而不是get,应该可以解决。

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

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

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

};