GraphQL,如何处理连接到数百个表

时间:2019-02-07 20:51:23

标签: database-design graphql

我们正在实现GraphQL,并且需要数百个数据库表来提取数据。

我们要以一种易于遍历的方式管理我们的API,并将数据分为逻辑组。

有没有办法实现这样的东西:

Group1> Queries
        Mutations
        Subscriptions
Group2> Queries
        Mutations
        Subscriptions
...

还是我们需要为每个GraphQL数据分组分别设置端点?

1 个答案:

答案 0 :(得分:2)

如果仅是美学问题,我真的不会担心您的QueryMutation类型上的字段数。您的客户团队是否使用GraphiQLGraphQL Playground来组成他们的查询(并且他们确实应该使用其中一种工具),两者均具有自动完成功能,可轻松从表单中选择特定字段数百个列表。

您可能正在与具有特定需求的特定客户组合作,这些客户在其可见数据方面或在其可对基础数据执行的突变类型方面均具有特定需求。在这些情况下,拥有单独的端点和单独的模式可能很有意义,每个端点都限于特定的一组客户端可以看到和执行的操作。如果您使用的是Apollo,甚至可以从基本模式开始,然后再使用schema transforms。但是,如果特定的客户端无论如何都将对每个端点进行查询,则可能不应该创建单独的端点-这样会给客户端造成不必要的负担。

当然,您可以仅将每种根类型的字段嵌套在其他类型中。例如:

type Query {
  group1: Group1
  group2: Group2
}

type Group1 {
  foo: Foo
  allFoos: [Foo!]!
  # other fields
}

type Group2 {
  bar: Bar
  allBars: [Bar!]!
  # other fields
}

尽管我会caution against this kind pattern for mutations,但这对您的查询类型来说是完全可以的。当然,如果您了解其中的含义,那么它可能是您团队的正确解决方案。