Neo4j - 使用 kaminari 分页 - 堆栈级别太深
Neo4j - pagination with kaminari - stack level too deep
我有很多作者(作为节点)创作了多个艺术作品(wokas),也作为节点。
我想获取第 100 页的作者,每页 5 位作者。
对于这五位被选中的第一作者,我想知道创作的第一部艺术作品。
这是我的代码和遇到的错误。
如何解决?
irb(main):021:0* a = Author.page(100).per(5)
=> #<Kaminari::Neo4j::Paginated:0x007fde539b3c30 @source=Author(author_name: String), @current_page=100, @per_page=5>
irb(main):022:0> a.first
CYPHER 792ms MATCH (result_author:`Author`) RETURN result_author SKIP {skip_495} LIMIT {limit_5} | {:skip_495=>495, :limit_5=>5}
=> #<Author uuid: nil, author_name: "1520?, Pittoni Battista, B.">
irb(main):023:0> w = a.first.wokas.first
CYPHER 361ms MATCH (result_author:`Author`) RETURN result_author SKIP {skip_495} LIMIT {limit_5} | {:skip_495=>495, :limit_5=>5}
Author#wokas 85038ms MATCH (previous:`Author`) OPTIONAL MATCH previous-[rel1:`AUTHORED_BY`]->(next:`Woka`) WHERE (ID(previous) IN {ID_previous}) RETURN ID(previous), collect(next) | {:ID_previous=>[19800172, 19800173, 19800174, 19800175, 19800176]}
SystemStackError: stack level too deep
from /Users/levi/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/neo4j-5.0.11/lib/neo4j/active_node/has_n.rb:154:in `previous_proxy_results_by_previous_id'
另一个语句因同样的错误而失败。
irb(main):003:0> w = a.first.wokas.count
CYPHER 372ms MATCH (result_author:`Author`) RETURN result_author SKIP {skip_495} LIMIT {limit_5} | {:skip_495=>495, :limit_5=>5}
Author#wokas 99625ms MATCH (previous:`Author`) OPTIONAL MATCH previous-[rel1:`AUTHORED_BY`]->(next:`Woka`) WHERE (ID(previous) IN {ID_previous}) RETURN ID(previous), collect(next) | {:ID_previous=>[19800172, 19800173, 19800174, 19800175, 19800176]}
SystemStackError: stack level too deep
我意识到我应该提供一个答案 ;)
我认为这已在 neo4j
gem 的 5.0.12
版本中修复。你能更新看看是否有效吗?
我有很多作者(作为节点)创作了多个艺术作品(wokas),也作为节点。 我想获取第 100 页的作者,每页 5 位作者。 对于这五位被选中的第一作者,我想知道创作的第一部艺术作品。 这是我的代码和遇到的错误。 如何解决?
irb(main):021:0* a = Author.page(100).per(5)
=> #<Kaminari::Neo4j::Paginated:0x007fde539b3c30 @source=Author(author_name: String), @current_page=100, @per_page=5>
irb(main):022:0> a.first
CYPHER 792ms MATCH (result_author:`Author`) RETURN result_author SKIP {skip_495} LIMIT {limit_5} | {:skip_495=>495, :limit_5=>5}
=> #<Author uuid: nil, author_name: "1520?, Pittoni Battista, B.">
irb(main):023:0> w = a.first.wokas.first
CYPHER 361ms MATCH (result_author:`Author`) RETURN result_author SKIP {skip_495} LIMIT {limit_5} | {:skip_495=>495, :limit_5=>5}
Author#wokas 85038ms MATCH (previous:`Author`) OPTIONAL MATCH previous-[rel1:`AUTHORED_BY`]->(next:`Woka`) WHERE (ID(previous) IN {ID_previous}) RETURN ID(previous), collect(next) | {:ID_previous=>[19800172, 19800173, 19800174, 19800175, 19800176]}
SystemStackError: stack level too deep
from /Users/levi/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/neo4j-5.0.11/lib/neo4j/active_node/has_n.rb:154:in `previous_proxy_results_by_previous_id'
另一个语句因同样的错误而失败。
irb(main):003:0> w = a.first.wokas.count
CYPHER 372ms MATCH (result_author:`Author`) RETURN result_author SKIP {skip_495} LIMIT {limit_5} | {:skip_495=>495, :limit_5=>5}
Author#wokas 99625ms MATCH (previous:`Author`) OPTIONAL MATCH previous-[rel1:`AUTHORED_BY`]->(next:`Woka`) WHERE (ID(previous) IN {ID_previous}) RETURN ID(previous), collect(next) | {:ID_previous=>[19800172, 19800173, 19800174, 19800175, 19800176]}
SystemStackError: stack level too deep
我意识到我应该提供一个答案 ;)
我认为这已在 neo4j
gem 的 5.0.12
版本中修复。你能更新看看是否有效吗?