dry-rb_autoinject和GraphQL

时间:2018-10-25 09:31:25

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

我正在尝试制作GraphQL API,但也通过dry-rb_autoinject实现依赖项注入。我设法通过控制器和上下文来做到这一点。这是我的测试QueryType。

Types::QueryType = GraphQL::ObjectType.define do
  name "Query"
  # Add root-level fields here.
  # They will be entry points for queries on your schema.

  # TODO: remove me
  field :testField, types.String do
    description "An example field added by the generator"
    resolve ->(obj, args, ctx) {
     ctx[:services][:output_service].()
    }
  end
end

然后在graphql_controller中我要做

class GraphqlController < ApplicationController
  include IMPORT[:output_service]
  def execute
   ...
      services: {
        output_service: output_service
      }
    ...

但是,当我导入所有服务时(如果我不需要当前字段的服务),此解决方案似乎不太好。有没有更奇妙的方法,也许不是通过上下文?

1 个答案:

答案 0 :(得分:0)

最好的解决方案显然是为每个根字段编写解析器函数并将其注入,因为解析器函数是从 GraphQL :: Function

继承的类。