Как вы определяете ретрансляционное соединение для разбиения на страницы по сравнению с ORM?

Я просмотрел всю документацию Relay, и, кажется, нет прямого объяснения того, как построить соединение Relay с ORM. Кажется, что во всех примерах используется метод connectionFromArray, который подходит, если вы храните свои данные в памяти, но когда вы сохраняете данные в базе данных, как бы вы предоставили информацию, необходимую для работы разбиения на страницы соединения?


person vincentriemer    schedule 15.09.2015    source источник


Ответы (1)


Курсор непрозрачный:

Результат этого поля считается непрозрачным для Relay, но будет передан обратно на сервер, как описано в разделе «Аргументы» ниже.

Таким образом, в зависимости от вашей модели данных может быть уместно передать что-то простое, например строку идентификатора, в качестве курсора, который затем можно будет использовать на сервере для загрузки соединения с помощью предложения вроде WHERE id > ?. Вы можете упаковать здесь произвольную информацию, необходимую для разбиения на страницы, и, например, закодировать ее в Base-64.

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

person wincent    schedule 15.09.2015
comment
Спасибо за ссылки, очень помогли! Если я смогу очистить этот код, который я собрал, возможно, я опубликую его здесь для дальнейшего использования. - person vincentriemer; 16.09.2015