【发布时间】:2020-08-13 04:03:40
【问题描述】:
这里的第一个问题。 我正在开发一个程序,该程序需要查询我的 azure devops 组织并返回由 System.Tag 和 System.TeamProject 过滤的工作项引用列表。
为此,我决定通过以下方式使用 azure-devops-node-api 的 queryByWiql() 函数:
//create a new WIQL object of data we want
const query: string = "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = [" + this.globals.API_PROJECT + "] AND [System.Tags] Contains [" + tag + "]";
console.log(query);
//create a new TeamContext object so the query knows where to look
const projectId = this.globals.API_PROJECT;
//ping ADO with this query
const result: WorkItemTrackingInterfaces.WorkItemQueryResult = await WorkItemApiObject.queryByWiql({query: query}, {project: projectId}); //WHY DOESNT THIS WORKKKKKK
其中 'this.globals.API_PROJECT' 是引用项目名称的字符串,而 'tag' 是我要查询工作项的标签名称的字符串。
问题是,当我使用参数 'this.globals.API_PROJECT' = projectName 和 'tag' = tagName 调用 queryByWiql() (只是随机参数:无论如何我都会收到相同的错误消息),我得到以下信息错误:
Failed to load resource: the server responded with a status of 400 () from dev.azure.com/{organization}/{project}/_apis/wit/wiql:1
ERROR Error: Uncaught (in promise): Error: TF51005: The query references a field that does not exist. The error is caused by «projectName».
at RestClient.<anonymous> (RestClient.js:202)
at Generator.next (<anonymous>)
at fulfilled (RestClient.js:6)
at ZoneDelegate.invoke (zone-evergreen.js:364)
at Object.onInvoke (core.js:27148)
at ZoneDelegate.invoke (zone-evergreen.js:363)
at Zone.run (zone-evergreen.js:123)
at zone-evergreen.js:857
at ZoneDelegate.invokeTask (zone-evergreen.js:399)
at Object.onInvokeTask (core.js:27136)
at resolvePromise (zone-evergreen.js:798)
at zone-evergreen.js:705
at rejected (tslib.es6.js:72)
at ZoneDelegate.invoke (zone-evergreen.js:364)
at Object.onInvoke (core.js:27148)
at ZoneDelegate.invoke (zone-evergreen.js:363)
at Zone.run (zone-evergreen.js:123)
at zone-evergreen.js:857
at ZoneDelegate.invokeTask (zone-evergreen.js:399)
at Object.onInvokeTask (core.js:27136)
问题是,我知道 projectName 和 tagName 存在于我正在查询的项目和组织中。我也知道我使用了对这些字段“System.Tag”和“System.TeamProject”的正确引用,因为我专门检查了我的项目。
我想要做的就是从此调用中获取类型 WorkItemTrackingInterfaces.WorkItemQueryResult。请帮忙!感谢您的宝贵时间。
EDIT1:添加了资源加载失败错误消息,因为这也会发生。
【问题讨论】:
-
是的,我有。括号是必要的,因为我的组织中有一些项目和标签使用空格和特殊字符,括号让 API 知道这些字符仍然是标签/项目名称的一部分。无论如何,即使没有括号,错误仍然是一样的。不过问题很好
-
更新:我错了。下面回答
标签: typescript azure-devops tags wiql