0

由于此处详述的 lbapi 的限制,我对 lbapi 的查询的大小急剧增加(我将一组“可见”项目传递给 LBAPI,它只会返回我有权查看的项目中的工作项)到了我得到“请求实体太大”错误的地步。

我知道我需要一次只使用一些可见的项目来分解我的查询。我想以编程方式执行此操作 - 对于每 100 个可见项目,进行一次查询,获取返回的记录并将它们放入数组中。

但是,当我试图确定何时继续时,这会变得有点混乱——所有查询都返回并填充了总计数组吗?谁能想到一个干净的方法来实现这一点?

for (var i = 0; i < Math.ceil(App.visibleTeams.length / 100); i++) {
    console.log('i',i);
    var tempProj = [];
    for (var j = i * 100; j < Math.min((i + 1) * 100, App.visibleTeams.length); j++) {
        tempProj.push(App.visibleTeams[j]);
    }
    console.log('tempProj.length',tempProj.length);
    // query
    App.completeRecords = [];
    Ext.create('Rally.data.lookback.SnapshotStore', {
        pageSize : 10000,
        fetch    : ['Parent','Name','_UnformattedID','PortfolioItemType','PercentDoneByStoryPlanEstimate','ObjectID','PlannedStartDate','PlannedEndDate','ActualStartDate','ActualEndDate','LeafStoryPlanEstimateTotal'],
        filters  : [{
            property : '__At',
            value    : 'current'
        },{
            property : '_TypeHierarchy',
            value    : 'PortfolioItem'
        },{
            property : '_ItemHierarchy',
            operator : 'in',
            value    : node.ObjectID
        },{
            property : 'Project',
            operator : 'in',
            value    : tempProj
        },{
            property : 'LeafStoryPlanEstimateTotal',
            operator : '>',
            value    : 0
        }]
    }).load({
        callback: function(records, operation, success) {
            if (!success) {
                Ext.getBody().unmask();
                Ext.Msg.alert('Error ' + operation.error.status + ': ' + operation.error.statusText, operation.error.errors[0]);
            } else {
                App.completeRecords.push.apply(App.completeRecords, records);
                // if done, callback(), else, do nothing
            }
        }
    });
}
4

1 回答 1

0

我们添加了一些新功能来解决这个问题。我对您引用的另一个问题添加了更详细的回复。

于 2013-08-14T21:09:40.353 回答