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'
}]