如何在Ruby中通过微服务聚合多个查询根类型?

时间:2019-02-19 11:50:31

标签: ruby graphql microservices

我有一个基于微服务的Ruby+GraphQL项目,一个使用ember-apollo的前端。我仍在学习所有这些技术,并且对微服务的概念还很陌生。

我的API中有三个模块-ClientsCollaboratorsmain(可以看作是其他模块的保护伞),每个模块除外,main,以及它们自己的graphql目录,其中包含各自的QueryType,类型/解析器以及位于这些模块外部的schema

由于schema只能具有一种 query类型,所以我想到的是以某种方式聚合其他QueryTypes中的字段this oneFieldCombiner模块中的main,作为入口点,并在我的模式中使用该入口点。

此解决方案的问题在于它使用了旧的.define样式,该样式将在graphql 2.0中删除,因此我相信class-based-api是更好的解决方案。我搜索了很多,却没有发现在该方向上起作用的东西。

我想在代码中做什么:

module OpenCompanyApi
  class Schema < GraphQL::Schema
    query Clients::Graphql::Types::Query
    query Collaborators::Graphql::Types::Query # Something like that. They're two different modules, each with their own root query type
    mutation Clients::Graphql::Types::Mutation
    mutation Collaborators::Graphql::Types::Mutation # This too
  end
end

0 个答案:

没有答案