Overwriting angular $resource function

I'm trying to overwrite the query()-method of AngularJS $resource with a custom $http-GET. However, it doesn't seem to overwrite the result of the operation. It returns an object with method, data and headers, not data.rows[].

angular.module('couchdb', ['ngResource']).
  factory('Project', function($resource, $http) {
    var Project = $resource('http://couchdb/mydb', {}, {
        'update': { method: 'PUT' },
        'query':  {method:'GET', isArray: false}
      }
    );

    Project.query = function() {
      return $http({method: 'GET', url: 'http://couchdb/mydb/_design/projects/_view/index'}).
        success(function(data, status, headers, config) {
          return data.rows;
        }).
        error(function(data, status, headers, config) {
          $scope.data = data || "Request failed";
          $scope.status = status;
        });
    };

    return Project;
  });

How can I only get the rows of the result for the resource?

ngResources don't need to rely on the $http service. You don't need to be redefining the Project.query function - as you've already indicated it as an action of the Project $resource (in addition to it being included by default).

This means that the Project.query function is ready to go, and does not need re-definition. You can literally just do Project.query() to get results. It supports callbacks for success/failure, so Project.query({}, successCallback, failureCallback) will submit no arguments, and give you access to the returned data.

I suggest you read the AngularJS $resource documentation carefully, as they provide plenty of good examples. A basic example is also included in Step 11 of the Angular Tutorial.