我正在使用app SDK 2.0。我有以下代码来检索特定迭代项目的前100个团队成员的任务
//getting the first 100 elements of the owners Array
owners = Ext.Array.splice(owners,0,100);
//Initial configuration of the filter object
var ownerFilter = Ext.create('Rally.data.QueryFilter', {
property: 'Owner.DisplayName',
operator:'=',
value: owners[0]
});
/*Creating the filter object to get all the tasks for 100 members in that project*/
Ext.Array.each(owners,function(member){
ownerFilter = ownerFilter.or(
Ext.create('Rally.data.QueryFilter',{
property: 'Owner.DisplayName',
operator:'=',
value: member
}));
});
//Iteration Filter for the Object
var iterationFilter = Ext.create('Rally.data.QueryFilter', {
property: 'Iteration.Name',
operator:'=',
value: 'Iteration 4.2'
});
var filter = ownerFilter.and(iterationFilter);
Rally.data.ModelFactory.getModel({
type: 'Task',
success: function(model) {
var taskStore = Ext.create('Rally.data.WsapiDataStore', {
model: model,
fetch:true,
limit:Infinity,
pageSize:200,
filters:[filter],
autoLoad:true,
projectScopeDown:true,
listeners:{
load:function(store,data,success) {
Ext.Array.each(data, function(record){
console.log(record.data);
});
}
}
});
}
});
此代码给出了413错误,因为查询的URL太大。请求URL包含项目的所有100个成员的名称。如何解决此问题?有没有可用的有效过滤选项?
答案 0 :(得分:0)
团队成员资格是一个很难过滤工件的属性,因为它作为属性驻留在用户身上,是一个无法在查询中使用的集合。
在这种情况下,您可能最好更多地使用过滤客户端。由于团队成员资格“近似”或与项目相关联,您可能希望首先过滤项目上的任务,即(Project.Name =“我的项目”)。然后通过循环并确保每个任务由所有者集合中的团队成员拥有来缩小客户端的范围。
或者,您可能会在您的任务上使用反映团队名称的标签。然后,您可以通过执行以下查询来过滤您的任务服务器端:
(Tags.Name包含“我的团队”)
我知道这些不是理想的选择,可能不是您正在寻找的答案,但是,它们是避免构建基于用户名的大量查询的一些想法。