【问题标题】:VSTS / TFS Error Occurred While Trying to get Work Items With WIQL尝试使用 WIQL 获取工作项时发生 VSTS/TFS 错误
【发布时间】:2017-03-17 11:19:27
【问题描述】:

我正在使用以下方法从我的 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);               
            }
        }

执行此方法时出现以下错误。根据我的网络研究,我找不到太多可以解决此问题的方法

未处理:必须以数字、缓冲区、数组或字符串开头

接下来我在邮递员(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"}}

【问题讨论】:

  • 你能做一个更简单的查询吗?
  • 根据错误信息:\"quary\",通过 Postman 请求的详细信息是什么(例如正文、URL)
  • 你使用的http请求包是什么(httpntlm)?
  • @starain-MSTF ,是的,我使用 httpntlm

标签: json rest tfs azure-pipelines-build-task wiql


【解决方案1】:

如果要使用body,body值必须是字符串,例如:

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

【讨论】:

    【解决方案2】:

    非常感谢您帮助我。我能够弄清楚并解决这个问题。我必须使用“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
                        }         
                    };
    

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 1970-01-01
      • 2015-06-20
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2019-03-11
      • 1970-01-01
      相关资源
      最近更新 更多