响应应包含一个对象,但得到的却是GET操作的数组

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

本文关键字:GET 数组 操作 包含 一个对象 响应      更新时间:2023-09-26

我收到这个错误"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);
    });
};