尝试使用 WIQL 获取工作项时出现 VSTS/TFS 错误
VSTS / TFS Error Occurred While Trying to get Work Items With WIQL
我正在使用以下方法从我的 VSTS 扩展中获取具有特定标题的工作项 ID。我正在使用 REST API 、Typescript 和 WIQL .
public getWorkItemsbyQueryFilter(): string[] {
try {
let query = "Select [System.Id] From WorkItems Where [System.WorkItemType] = '" + this.workItemType + "' AND [System.Title] contains 'ABC'";
var ids : string[];
var self = this;
var colURL = this.collectionURL +this.teamProject +"/_apis/wit/wiql?api-version=1.0"
var options = {
url: colURL,
username: this.username,
password: this.password,
domain: this.domain,
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body :{
'query': query
}
};
httpntlm.post(options, function(err,res) {
if(err) {
console.log("Error : +"+ err)
deferred.reject(err);
}
var obj = JSON.parse(res.body);
for (var index = 0; index < obj.workItems.length; index++) {
ids.push(obj.workItems[index].id);
}
return ids;
});
} catch (error) {
console.log("Failed to Get Work Item Ids :"+ error);
}
}
执行此方法时出现以下错误。根据我的网络研究,我找不到太多解决这个问题的方法
Unhandled: must start with number, buffer, array or string
接下来我在邮递员(chrome 扩展)中尝试这个请求。我在同一方面收到新错误。 Json 似乎有问题,但我无法弄清楚它到底是什么。请大家多多指教。
{"count":1,"value":{"Message":"Error converting value \"query\" to type 'Microsoft.TeamFoundation.WorkItemTracking.Web.Models.Wiql'. Path '', line 1, position 7.\r\n"}}
非常感谢您的帮助。我能够弄清楚并解决这个问题。我必须使用 "json" 而不是 "body" 来解决这个问题(请检查下面的代码..但是我在邮递员中仍然遇到同样的错误。仍在尝试找出它给出错误的原因)。
var options = {
url: colURL,
username: this.username,
password: this.password,
domain: this.domain,
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
json :{
'query': query
}
};
如果要使用body,body值必须是字符串,例如:
body:`{
'query': 'Select [System.Id] From WorkItems Where [System.WorkItemType] = "Bug" AND [System.Title] contains "bug"'
}`
我正在使用以下方法从我的 VSTS 扩展中获取具有特定标题的工作项 ID。我正在使用 REST API 、Typescript 和 WIQL .
public getWorkItemsbyQueryFilter(): string[] {
try {
let query = "Select [System.Id] From WorkItems Where [System.WorkItemType] = '" + this.workItemType + "' AND [System.Title] contains 'ABC'";
var ids : string[];
var self = this;
var colURL = this.collectionURL +this.teamProject +"/_apis/wit/wiql?api-version=1.0"
var options = {
url: colURL,
username: this.username,
password: this.password,
domain: this.domain,
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body :{
'query': query
}
};
httpntlm.post(options, function(err,res) {
if(err) {
console.log("Error : +"+ err)
deferred.reject(err);
}
var obj = JSON.parse(res.body);
for (var index = 0; index < obj.workItems.length; index++) {
ids.push(obj.workItems[index].id);
}
return ids;
});
} catch (error) {
console.log("Failed to Get Work Item Ids :"+ error);
}
}
执行此方法时出现以下错误。根据我的网络研究,我找不到太多解决这个问题的方法
Unhandled: must start with number, buffer, array or string
接下来我在邮递员(chrome 扩展)中尝试这个请求。我在同一方面收到新错误。 Json 似乎有问题,但我无法弄清楚它到底是什么。请大家多多指教。
{"count":1,"value":{"Message":"Error converting value \"query\" to type 'Microsoft.TeamFoundation.WorkItemTracking.Web.Models.Wiql'. Path '', line 1, position 7.\r\n"}}
非常感谢您的帮助。我能够弄清楚并解决这个问题。我必须使用 "json" 而不是 "body" 来解决这个问题(请检查下面的代码..但是我在邮递员中仍然遇到同样的错误。仍在尝试找出它给出错误的原因)。
var options = {
url: colURL,
username: this.username,
password: this.password,
domain: this.domain,
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
json :{
'query': query
}
};
如果要使用body,body值必须是字符串,例如:
body:`{
'query': 'Select [System.Id] From WorkItems Where [System.WorkItemType] = "Bug" AND [System.Title] contains "bug"'
}`