我为我的公司创建了一个自定义应用程序,只要其中只有两个字段,只要添加了第三个字段,查询就可以正常工作,它不返回任何记录:当有两个以上AND子句时,多从句AND查询不起作用
仅供参考,我查询故事和缺陷:
var query = [];
var queryCriteria = buildQueryFilter(STORIES);
query[0] = {
key : STORIES,
type : "HierarchicalRequirement",
fetch : "FormattedID,Name,Owner,SubProject,CreationDate,Release,Iteration,ScheduleState,State,Build,Parent",
order : "FormattedID",
query : queryCriteria
};
var queryCriteria = buildQueryFilter(DEFECTS);
if (!(showUserStoriesOnly)){
query[1] = {
key : DEFECTS,
type : "defects",
fetch : "FormattedID,Name,Owner,SubProject,CreationDate,Release,Iteration,ScheduleState,State,FixedInBuild,Requirement",
order : "FormattedID",
query : queryCriteria
};
}
rallyDataSource.findAll(query, showResults);
编辑:下面是一些buildQueryFilter “缩写为” 代码:
returnFilter += returnFilter.length === 0 ? '' : ' AND '
returnFilter += '(Iteration.Name = "' + filterIteration + '")';
returnFilter += returnFilter.length === 0 ? '' : ' AND '
returnFilter += '(ScheduleState = "' + filterScheduleState + '")';
returnFilter += returnFilter.length === 0 ? '' : ' AND '
returnFilter += '(Owner = \"__USER_NAME__\")';
returnFilter = '(' + returnFilter + ')';
当 “queryCriteria” 是:
查询(故事):((Iteration.Name = “25(10/02 - 10/16)”)AND(ScheduleState = “接受”))
查询(缺陷):((Iteration.Name = “25(10/02 - 10/16)”)AND(ScheduleState = “接受”))
它的工作原理。但是,一旦我添加场 - 它什么并不重要领域,或什么样的顺序 - 那么它不工作了:
查询(故事):((Iteration.Name =“25(10 (缺省值):(Iteration.Name =“25(”))AND(ScheduleState =“Accepted”)AND(Owner =“[email protected]”))
查询(缺陷): 10/02 - 10/16)“)AND(ScheduleState =”Accepted“)AND(Owner =”[email protected]“))
我一直在查看文档,这应该是工作。我不确定它为什么不是。有人有线索吗?
谢谢!
嗨@kyle,其实buildQueryFilter方法非常简单,我只是从UI中获取值并构建一个字符串,它以我在原始帖子中呈现的方式返回。 –
你错过了一些parens。在我的示例中查看queryFilter.toString()输出中的parens。您的查询应该如下所示:(((Iteration.Name =“25(10/02 - 10/16)”)AND(ScheduleState =“Accepted”))AND(Owner =“[email protected]”)) –
是啊。我试着自己玩那些parens,但没有奏效。我会尝试查询对象,并会让你知道。谢谢! –