由于此处详述的 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
}
}
});
}