尝试使用WIQL获取工作项目时发生VSTS/TFS错误

问题描述:

我正在使用下面的方法从我的VSTS扩展中获取具有特定标题的工作项ID。我正在使用REST API,Typescript和WIQL。尝试使用WIQL获取工作项目时发生VSTS/TFS错误

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);    
      } 
     } 

当我执行此方法时出现错误。按我的网络的研究,我找不到太多的解决这个问题

未处理:必须以数量,缓冲,数组或字符串

接下来我尝试在邮递员请求(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"}} 
+0

你可以做一个简单的查询工作? –

+0

根据错误消息:\“quary \”,通过邮递员请求的详细信息(例如body,URL) –

+0

您用于http请求(httpntlm)的包是什么? –

非常感谢您的帮助。我能弄清楚并解决这个问题。我必须使用“json”而不是“body”来解决这个问题(请检查下面的代码..但是我仍然会在postman中得到同样的错误,仍然试图找出为什么它给出了错误)。

var options = {    
        url: colURL, 
        username: this.username, 
        password: this.password, 
        domain: this.domain, 
        method: 'POST', 
        headers: { 
         'Content-Type': 'application/json' 
        }, 
        json :{ 
         'query': query 
        }   
       }; 
+0

你可以标记为答案。 –

身体值必须是字符串,如果你想用身体,例如:

body:`{ 
     'query': 'Select [System.Id] From WorkItems Where [System.WorkItemType] = "Bug" AND [System.Title] contains "bug"' 
     }`