API REST Visual Studio Team Services не соответствует документации?

Может кто-нибудь сказать мне, что я делаю не так? Я пытаюсь создать собственный виджет для панелей Microsoft Team Services, но он не соответствует документации.

Все, что я делаю, - это вызываю простой API, который должен содержать список существующих запросов. И я регистрирую результаты в консоли. Но результат, в котором я вышел, имеет свойства, отличные от описанных в документации.

Согласно API.getQueries () здесь; Клиентские API REST. Предполагается вернуть 'IPromise<Contracts.QueryHierarchyItem[]>' и QueryHierarchyItem содержит список членов, перечисленных здесь; QueryHierarchyItem

Объект, который я выхожу, выглядит примерно так:

    Array
    ->Object
    ---> _links
    ------> html
    ---------> href
    ------> self
    ---------> href
    ------> _proto
    ---> createdDate
    ---> hasChildren
    ---> id
    ---> isFolder
    ---> isPublic
    ---> lastModifiedBy
    ------>displayName
    ------>id
    ------>_proto
    ---> lastModifiedDate
    ---> name
    ---> path
    ---> url
    ---> _proto_

И у него нет таких свойств, как массив 'children' или логическое значение 'isDeleted' как описано в документации для QueryHierarchyItem. Почему это так? я что-то неправильно понимаю?

Кстати. Вот код, который я использую:

VSS.require(["TFS/Dashboards/WidgetHelpers", "TFS/WorkItemTracking/RestClient"],
        function(WidgetHelpers, TFS_Wit_WebApi) {
            WidgetHelpers.IncludeWidgetStyles();
            VSS.register("HelloWorldWidget2", function() {
                var projectId = VSS.getWebContext().project.id;

                var getQueryInfo = function(widgetSettings) {


                    //******CALL TO REST API*********//
                    return TFS_Wit_WebApi.getClient().getQueries(projectId)
                        .then(function(queries) {

                            console.log(queries);
                            return true;

                        });
                };

                return {
                    load: function(widgetSettings) {
                        // Set your title
                        var $title = $('h2.title');
                        $title.text('Query Details 3');

                        return getQueryInfo(widgetSettings);
                    }
                }
            });
            VSS.notifyLoadSucceeded();
        });

Любая помощь приветствуется.

1 ответ

Решение

getQueries() имеет три необязательных параметра:

  • развернуть: Contracts.QueryExpand. Необязательный.
  • глубина: число. Необязательный.
  • includeDeleted: логическое значение. Необязательный.

По умолчанию глубина равна "0", что означает, что она не включает дочерние объекты в запрос / папку. Так что это будет пустым по умолчанию. Максимальная глубина, которую вы можете запросить, составляет 2. Попробуйте добавить эти необязательные параметры, чтобы увидеть, можете ли вы получить желаемый результат.

Для значения по умолчанию необязательных параметров, пожалуйста, обратитесь к этой ссылке для получения подробной информации: Получить список запросов.

Поскольку я тоже не нашел ответа, я поиграл с этим сегодня вечером и получил запрос на возврат всех существующих запросов с приведенным ниже кодом. Третий параметр (глубина) - это то, с чем можно поиграть, я не знаю, сломается ли он, если вы, например, поставите "5", но у вас есть только 3 уровня детей и т. Д.

Модуль "Контракты" необходим в строке "VSS.require" - документации на это не хватает лет...

VSS.require(["TFS/Dashboards/WidgetHelpers", "TFS/WorkItemTracking/RestClient", "TFS/WorkItemTracking/Contracts"],
    function(WidgetHelpers, TFS_Wit_WebApi, contracts) {
        WidgetHelpers.IncludeWidgetStyles();
        VSS.register("HelloWorldWidget2", function() {
            var projectId = VSS.getWebContext().project.id;
            var getQueryInfo = function(widgetSettings) {

                //******CALL TO REST API*********//
                return TFS_Wit_WebApi.getClient().getQueries(projectId,contracts.All,2,false)
                    .then(
                            function (queries) {
                                console.log(JSON.stringify(queries));
                                return true;
                            });
            };

            return {
                load: function(widgetSettings) {
                    // Set your title
                    var $title = $('h2.title');
                    $title.text('Query Details 3');

                    return getQueryInfo(widgetSettings);
                }
            }
        });
        VSS.notifyLoadSucceeded();
    });
Другие вопросы по тегам