3

AppEngine で RESTFul バックエンドの AppEngine エンドポイントを実行しています。クライアント側でAngujarJSを使用し、ngResourceでサーバーデータを管理しています。

私の問題: AppEngine エンドポイントから純粋な配列を返すことができません。私はこれを試しました:

@ApiMethod(
        name = "mpscorerapi.getAllResults",
        path = "/tournament/{tournamentId}/result/"
        httpMethod = HttpMethod.GET
)
public List<SimpleResult> getAllResults(@Named("tournamentId") Long tournamentId) throws NotFoundException
{
   ...
}

これはサーバーからクライアントにデータを取得しますが、「SimpleResult」オブジェクトの配列を構築するのではなく、「アイテム」と呼ばれる SimpleResult の配列を含む単一のオブジェクトを構築します。

  {
 "items": [
  {
   "id": "5733953138851840",
   "h": 0,
   "r": 0,
   "kind": "mpscorer#mpscorerapiItem"
  },
  {
   "id": "5733953138851841",
   "h": 1,
   "r": 2,
   "kind": "mpscorer#mpscorerapiItem"
  }
 ],
 "kind": "mpscorer#mpscorerapi",
 "etag": "\"SALE0WnK41Jo38zV0ILO62-rVOI/Mh2G6GGztZv-wj_56Kjf1o1XBaM\""
}

「クエリ」メソッドは応答として純粋な配列を期待するため、これにより ngResource はかなり役に立たなくなります。

$scope.resultsSrv = Result.query({tournamentID:tournamentId}) //fails!!!!

「SimpleResult」配列だけを取得する方法について何か考えはありますか?

ありがとう!

4

2 に答える 2

1

たとえば、次のようにリクエストを変換する必要があります。

angular.module('myApp')
  .factory('Result', function Result($http, $resource) {
    var Result = $resource('/tournament/:tournamentId/result/', {}, {
      query: {
        method: 'GET', 
        isArray: true,
        transformResponse: [].concat($http.defaults.transformResponse, function transformResponse(data) {
          return data.items;
        })
      }
    });
    return Result;
  });
于 2015-08-26T08:09:18.217 に答える
0

同様の課題がありました。jQueryを使用して解析することになりました。マップを使用すると、非常に簡単です。

私の場合は:

$.map(locs.items, function (loc) {
                      return {
                          value: loc.longName
                      };
于 2014-12-31T13:51:00.317 に答える