0

Я пытаюсь выяснить, как использовать конечные точки Google Cloud с пейджингом. Я получаю только 10 результатов. Я установил свойство shouldFetchNextItems в значение YES. Также мой объект запроса не имеет свойства nextToken или maxResults. Существует GTLQueryCollectionProtocol с pageToken, но я не вижу, где он используется.iOS app endpoints paging

static GTLServiceOwnit *service = nil; 
static dispatch_once_t onceToken; 
dispatch_once(&onceToken, ^{ 
    service = [[GTLServiceOwnit alloc] init]; 
    service.retryEnabled = YES; 
    service.shouldFetchNextPages = YES; 
}); 

NSError *error; 

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 

GTLQueryOwnit *query = [GTLQueryOwnit queryForBrandList]; 

[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLOwnitBrandCollection *object, NSError *clouderror) { 
    NSLog(@"counts: %d", [[object items] count]); 
    ... 

Edit: Вот мой бэкенд в питоне:

class Brand(EndpointsModel): 
    name = ndb.StringProperty(required=True) 

@Brand.query_method(path='brand', 
        http_method='GET', 
        name='brand.list') 
def brand_list(self, query): 
    """Exposes an API endpoint to query for brands for the current user""" 
    return query.order(Brand.name) 

Спасибо,

+0

Как выглядит ваш backend? Это Python или Java? Почему у вашего объекта запроса есть свойство nextToken или maxResults? – bossylobster

+0

@bossylobster Я обновил свое сообщение с помощью внутреннего кода. Я собирался на примере здесь: http://code.google.com/p/google-api-objectivec-client/wiki/Introduction#Result_Pages где GTLQueryTasks имеет pageToken и maxResults –

ответ

1

Отъезд paging образец из документации.

Для того, чтобы параметры поискового вызова, которые будут включены в ваш API, вам необходимо явно включить их в свой метод:

@Brand.query_method(query_fields=('limit', 'pageToken'), 
        path='brand', 
        http_method='GET', 
        name='brand.list') 
def brand_list(self, query): 
    """Exposes an API endpoint to query for brands for the current user""" 
    return query.order(Brand.name) 

Значение по умолчанию предела запроса является 10. Вы можете изменить его, но вы должны установить разумный limit. Это поле limit_default в query_method.

+0

не должен по умолчанию возвращать все элементы в «Таблице бренда»? –

+0

Какое значение по умолчанию? Какая таблица? – bossylobster

+0

В моем бренд-столе у ​​меня около 20 строк. Когда я запускаю executeQuery на службе, я должен получить все 20. В настоящее время это пейджинг по умолчанию и отправка только первых 10. –

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