2017-03-17 71 views
0

我正在使用下面的方法從我的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)的包是什麼? –

回答

0

非常感謝您的幫助。我能弄清楚並解決這個問題。我必須使用「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

你可以標記爲答案。 –

1

身體值必須是字符串,如果你想用身體,例如:

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