diff --git a/lib/graphql/pagination/relation_connection.rb b/lib/graphql/pagination/relation_connection.rb index 0e6b091474..b5ef4bb97e 100644 --- a/lib/graphql/pagination/relation_connection.rb +++ b/lib/graphql/pagination/relation_connection.rb @@ -220,8 +220,19 @@ def limited_nodes # Load nodes after applying first/last/before/after, # returns an array of nodes def load_nodes - # Return an array so we can consistently use `.index(node)` on it - @nodes ||= limited_nodes.to_a + return @nodes if @nodes + + if @loading_nodes + context.dataloader.yield until @nodes + return @nodes + end + + @loading_nodes = true + begin + @nodes = limited_nodes.to_a + ensure + @loading_nodes = false + end end end end