Neo4j gem - Отдельный запрос с Paginate
Как я могу заставить мой подключенный массив работать с методом paginate (который, я считаю, работает только с объектами queryproxy)
Мои результаты вытягивают несколько одинаковых узлов, так как к нему есть несколько путей, поэтому я добавил вот такие вот отличительные слова...
current_user.friends....where()...params().pluck('DISTINCT e').paginate..
Есть ли другой способ обойти это? или нужно будет внести изменения в самоцвет neo4j?
1 ответ
Прямо сейчас это невозможно сделать с помощью paginate
метод. WillPaginate возвращается WillPaginate::Collection
объекты, которые уже заполнены из базы данных. Мы могли бы заставить его вернуть что-то другое и лениво оценить, но мне придется больше с этим поиграть.
Вы можете создать Neo4j::Paginated
Объекты напрямую, но это просто результаты из QP.
# match stupid friends with awful events, return distinct events
query = current_user.friends(:f).where(stupid: true).events(e:).rel_where(expected_attendees: 0)
@bad_events = Neo4j::Paginated.create_from(query, 1, 15).pluck('distinct e')
create_from
возвращает Neo4j::Paginated
объект, который делегирует each
а также pluck
к его объекту QueryProxy, переданному ему. Обратите внимание, что он будет разбивать на страницы в зависимости от конца цепочки, поэтому он делает первую страницу с 15 на страницу на основе событий. Также обратите внимание, что вы не можете сделать четкий подсчет.
Проверьте https://github.com/neo4jrb/neo4j/blob/master/lib/neo4j/paginated.rb для получения дополнительной информации. Это довольно легко читать.