Lookback API удаляет неавторизованные снимки

Когда у меня возникли проблемы с запросом к lbapi, я сделал шаг назад и создал очень простое приложение, содержащее только запрос, в котором записывались результаты.

Это выглядело примерно так:

Deft.Chain.pipeline([
    function() {
        var dd = Ext.create('Deft.Deferred');
        Ext.create('Rally.data.lookback.SnapshotStore', {
            fetch    : ['Parent', 'Feature'],
            filters  : [{
                property : '__At',
                value    : 'current'
            },{
                property : '_TypeHierarchy',
                value    : 'HierarchicalRequirement'
            }]
        }).load({
            params : {
                compress : true,
                removeUnauthorizedSnapshots : true
            },
            callback : function(store) {
                console.log('store',store);                     
                dd.resolve(store);
            }
        });
        return dd.promise;
    }
]).then({
    success: function(records) {
        console.log('records', records);
    }
});

Странно, если бы я добавил фильтр, как это:

{
      property : 'Parent',
      operator : '!=',
      value    : null
}

Я получил больше результатов. Я пришел к выводу, что removeUnauthorizedSnapshots должен фильтровать результаты после того, как все они будут собраны на странице с 20000 результатами, и, таким образом, это будет возможно. Кто-нибудь может это подтвердить? Надеюсь, такой путаницы можно избежать в будущем.

1 ответ

Решение

Ты прав.

removeUnauthorizedSnapshots фильтрует текущий набор результатов по размеру страницы, что означает, что он может фактически вернуть страницу с 0 результатами в крайнем случае, когда все результаты связаны или были когда-то связаны с проектами, к которым у пользователя нет доступа.

Я не уверен в результате, когда ты получил больше результатов. Дополнительный фильтр должен только ограничивать количество результатов далее, и я вижу дальнейшее сокращение, когда я использую подобный код.

Но я хотел бы предложить изменить синтаксис фильтра для свойства Parent. Нули вообще не хранятся в Lookback API, поэтому любые запросы!= Null или == null немного вводят в заблуждение. В вашем коде это работает, но в случае Parent == null он вернет снимки, которые не имеют атрибута Parent, а не только те, которые имеют атрибут Parent, который имеет значение null. Вы можете использовать exists true вместо != null

filters  : [
     {
           property : 'Parent',
           operator : 'exists',
           value : true

    },{
           property : '__At',
           value    : 'current'
     },{
           property : '_TypeHierarchy',
           value    : 'HierarchicalRequirement'
}]
Другие вопросы по тегам