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({});
        }
    });
}

它返回一个带有 Project/Points 对的对象,并且在将 1-2 次迭代 ObjectID 传递给它时完美地工作。问题是当我开始请求更大的数据集时。我一直收到“请求实体太大”错误。我认为这是请求本身的问题,尽管我不确定它如何“太大”。此错误的可能原因是什么?

谢谢!

4

2 回答 2

1

您可以执行 Ext.util.Cookies.clear(cookieName) 来删除 cookie。通常,ALM 的最大请求大小为 8k,因此大型 pref 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 回答
1

大型状态元素,例如从选取器中选择的值,应该与 Ext.state.LocalStorageProvider 实例一起存储,而不是 Ext.state.CookieProvider。假设不需要发送 cookie 来完成查询请求。

于 2012-10-17T20:05:51.263 回答