Objectify SimpleQuery.endAt() - откуда именно это начинается?

Какова точная семантика Objectify SimpleQuery.endAt()? В документации говорится, что он "заканчивает результаты запроса на указанном курсоре" ( https://code.google.com/p/objectify-appengine/source/browse/src/main/java/com/googlecode/objectify/cmd/SimpleQuery.java?r=a7402d1a9308fbb7b9fd6cb687e43be091d1bcb0#73), что можно интерпретировать двумя способами.

Скажем, курсор указывает на результат C, и я установил предел запроса на X. Будет ли endAt () возвращать результаты в диапазоне [CX, C] или [0, min(X,C)]? То есть начинается ли он в X в результате курсора и всегда заканчивается в курсоре, или он всегда начинается с начала?

РЕДАКТИРОВАТЬ: документация заставила меня думать, что это будет первое, но на практике я заметил, что последнее поведение. Это означает, что для правильной реализации разбиения на страницы для результатов поиска необходимо отслеживать все курсоры, а не только два самых последних. Это хорошо, но я думаю, что документация должна быть более точной.

1 ответ

Решение

Объективировать -х endAt() просто передает курсор на API низкого уровня FetchOptions.endCursor(); limit() просто передает значение FetchOptions.limit(), Взаимодействие определяется Google и не представляется документированным. Наиболее важные биты, которые я могу найти:

https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/FetchOptions

https://cloud.google.com/appengine/docs/java/datastore/queries

Я хотел бы задать вопрос в группе google appengine или, может быть, опубликовать еще один вопрос о стековом потоке, обобщающий вопрос в GAE (отбросьте характер Objectify и Java). Если повезет, есть кто-то, кто знает - возможно, в сообществе GAE/Python, которое несколько больше, чем сообщество GAE/Java.

Другие вопросы по тегам