Отсортированные запросы без сохранения состояния - PullRequest
1 голос
/ 08 июня 2019

Я пишу API для веб-приложения. Я хотел бы разбить результаты на страницы, если строка в таблице превышает какое-либо значение. Однако я также хотел бы разрешить клиентам фильтровать и сортировать результаты.

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

Я прочитал, что способ добиться того, чего я хочу, это использовать курсоры базы данных. Однако мне нужно, чтобы сессия была липкой для этого.

Я также думал о сохранении результата во временной таблице и присвоении ей уникального имени, если пользователь вместо этого отправляет данные запроса с тем же именем обратно из этой таблицы. Проблема с этим заключается в том, что мне пришлось бы использовать некоторое время ожидания для удаления таблицы, что может привести к 404 секундам, если клиент запрашивает следующую страницу после времени ожидания (может быть плохо для UX клиента).

Итак, вопрос в следующем: Есть ли общепринятый способ добиться этого, который также не имеет гражданства? Если не существует способа без сохранения состояния, каков наиболее масштабируемый способ достижения этого? и желательно, чтобы это тоже не было так грязно.

Если это поможет, я использую Swift, Vapor 3 (без Fluent ORM) и PostgreSQL.

И, наконец, я что-то упускаю из виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...