2013-09-10 2 views
0

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

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

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 результатов, и, таким образом, это было бы возможно. Может ли кто-нибудь подтвердить это? Будем надеяться, что такой путаницы можно избежать в будущем

ответ

0

Вы верны.

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

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

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

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

    },{ 
      property : '__At', 
      value : 'current' 
    },{ 
      property : '_TypeHierarchy', 
      value : 'HierarchicalRequirement' 
}] 
+0

Я ожидал увидеть сокращение, а также, но вы говорите, фильтры, предусмотренные применяются до того, как несанкционированные снимки будут удалены, так что моя теория не совсем верно? –

+0

Я считаю, что после того, как применяются фильтры, удаляются несанкционированные снимки. Я добавил свой ответ выше альтернативного синтаксиса фильтра на свойство Parent. – nickm

Смежные вопросы