1

私は、ルックバック ツールを使用して、プロジェクトが特定の日付に持っていたポイントの合計数を取得するアプリを作成しています。この情報をプルするリクエストは次のようになります。

getPointsOn: function(date, iOIDs, callback) {
    var params    = {};
    params.find   = '{ Iteration: {$in: [' + iOIDs + ']}, PlanEstimate: { $gt: 0 }, __At: "' + date.toISOString() + '" }';
    params.fields = '[ "PlanEstimate", "Project" ]';

    Ext.Ajax.cors = true;
    Ext.Ajax.request({
        url: App.qURL,
        method: 'GET',
        params: params,
        withCredentials: true,
        success: function(response) {
            var points = {};
            Ext.Array.each(Ext.JSON.decode(response.responseText).Results, function(US) {
                if (points[US.Project] == undefined) points[US.Project] = 0;
                points[US.Project] += US.PlanEstimate;
            });
            callback(points);
        },
        failure: function() {
            console.log('Ajax Failed');
            callback({});
        }
    });
}

プロジェクト/ポイントのペアを持つオブジェクトを返し、1 ~ 2 回の反復 ObjectID が渡されると完全に機能します。問題は、より大きなデータ セットを要求し始めたときです。「リクエスト エンティティが大きすぎます」というエラーが表示されます。これはリクエスト自体に問題があると思いますが、どのように「大きすぎる」のかはわかりません。このエラーの考えられる原因は何ですか?

ありがとう!

4

2 に答える 2

1

ピッカーから選択された値などの大きな状態要素は、Ext.state.CookieProvider ではなく、Ext.state.LocalStorageProvider インスタンスで保存する必要があります。クエリ要求を満たすために Cookie を送信する必要はないと仮定します。

于 2012-10-17T20:05:51.263 に答える
1

Ext.util.Cookies.clear(cookieName) を実行して Cookie を削除できます。通常、ALM の最大要求サイズは 8k であるため、大きな優先 Cookie と多数の反復 oid を組み合わせると、この制限に達する可能性があります。

また、SDK 2.0p4 には Lookback API にアクセスするためのより完全にサポートされた方法があります。 http://developer.rallydev.com/apps/2.0p4/doc/#!/api/Rally.data.lookback.SnapshotStore

Ext.create('Rally.data.lookback.SnapshotStore', {
    listeners: {
        load: function(store, data, success) {
            //process data
        }
    },
    fetch: ['PlanEstimate', 'Project'],
    filters: [
        {
            property: 'Iteration',
            operator: 'in',
            value: iOIDS //an array
        },
        {
            property: 'PlanEstimate',
            operator: '>',
            value: 0
        },
        {
            property: '__At',
            value: date.toISOString()
        },
    ],
    autoLoad: true
});
于 2012-10-15T12:32:12.580 に答える