2017-03-17 3 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);    
      } 
     } 

このメソッドを実行すると、以下のエラーが発生します。私のWeb研究あたりとして、私は未処理の

この問題を解決するために多くを見つけることができませんでした:数字で始める必要があり、バッファ、配列や文字列

次私は郵便配達で、この要求をしようとしている(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 \」に基づいて、郵便番号によるリクエストの詳細は何ですか(例:本文、URL) –

+0

httpリクエスト(httpntlm)に使用したパッケージは何ですか? –

答えて

0

ありがとうございました。私はそれを理解してこの問題を解決することができました。私はこの問題を解決するために "body"の代わりに "json"を使用しなければなりません。(以下のコードをチェックしてください..しかし私はまだ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"' 
     }` 
関連する問題