【问题标题】:includes/eager load associated models with graphql-ruby包括/渴望加载与 graphql-ruby 相关的模型
【发布时间】:2017-11-11 23:19:35
【问题描述】:

我一直在寻找有关如何在使用 graphQL-ruby 时为关联模型翻译传统 ActiveRecod .include 的示例,但没有找到任何示例。 作为一个用例,假设我们有以下模型:

User
has_many :books

Book
belongs_to :user
has_many :chapters

Chapter
belongs_to :book
has_many :pages

Page
belongs_to :chapter

我们如何实现以下功能:

User.includes(books: {chapters: :pages})

实际嵌套的 GraphQL 查询比较简单;但是,它似乎以 N+1 运行。

任何帮助将不胜感激。

【问题讨论】:

标签: ruby-on-rails ruby graphql graphql-ruby


【解决方案1】:

我们为 graphql-ruby 编写了一个小 gem,它通过遍历 GraphQL 查询来生成包含。

https://github.com/thesquarefoot/graphql_includable

对于您的示例,您可以在 User 字段解析器中调用 User.includes_from_graphql(ctx)

【讨论】:

  • 请注意,这不再适用于 graphql 的基于类的 API。 ctx.irep_node 也不再通过,因此需要一个新的解决方案。
【解决方案2】:

您应该使用 graphql-preload gem 在 Graphql 中预加载关联

https://github.com/ConsultingMD/graphql-preload

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多