Я просмотрел всю документацию Relay, и, кажется, нет прямого объяснения того, как построить соединение Relay с ORM. Кажется, что во всех примерах используется метод connectionFromArray
, который подходит, если вы храните свои данные в памяти, но когда вы сохраняете данные в базе данных, как бы вы предоставили информацию, необходимую для работы разбиения на страницы соединения?
Как вы определяете ретрансляционное соединение для разбиения на страницы по сравнению с ORM?
Ответы (1)
Курсор непрозрачный:
Результат этого поля считается непрозрачным для Relay, но будет передан обратно на сервер, как описано в разделе «Аргументы» ниже.
Таким образом, в зависимости от вашей модели данных может быть уместно передать что-то простое, например строку идентификатора, в качестве курсора, который затем можно будет использовать на сервере для загрузки соединения с помощью предложения вроде WHERE id > ?
. Вы можете упаковать здесь произвольную информацию, необходимую для разбиения на страницы, и, например, закодировать ее в Base-64.
Если вы посмотрите на код, который возвращает соединение из массива, вы получите приблизительное представление о семантике, которую вам нужно реализовать поверх вашего хранилища с поддержкой ORM, но вместо индексирования в массив, как это делается, вы будете синтезировать непрозрачный курсор, который содержит достаточно информации для последующей разбивки на страницы с помощью ORM.