TypeGraphql 与 Apollo 联合是不是可行?

Posted

技术标签:

【中文标题】TypeGraphql 与 Apollo 联合是不是可行?【英文标题】:Is TypeGraphql with Apollo federation possible?TypeGraphql 与 Apollo 联合是否可行? 【发布时间】:2020-12-20 15:09:01 【问题描述】:

我们计划迁移到 Apollo GraphQL,因为 Apollo 联合功能允许在单个 GraphQL API 后面统一多个微服务。但是我们目前正在使用 TypeGraphQL,我认为它们是不兼容的。原因是在阿波罗联盟中我看到你使用了特殊的@key 属性

/* example from docs */
const typeDefs = gql`
  type Query 
    me: User
  

  type User @key(fields: "id") 
    id: ID!
    username: String
  
`;

但是,TypeGraphql 的架构是从类自动生成的。有没有办法仍然使用这两种技术,或者它们是相互排斥的?

【问题讨论】:

【参考方案1】:

Typegraphql 已添加对它的支持,请查看此处的示例https://github.com/MichalLytek/type-graphql/tree/master/examples/apollo-federation

【讨论】:

【参考方案2】:

虽然它通过使用@Directive 装饰器得到支持,但在大型项目中使用它并不容易。我目前正在一个复杂的项目中实现它,我对从另一个模式中引用某种类型所需的样板代码量不满意。这里有一些关于添加更好支持的对话: https://github.com/MichalLytek/type-graphql/issues/351#issuecomment-549156066 如果我有时间的话,我计划添加支持。

但它仍然没有实现。我创建了一个存储库,您可以在其中看到最小的示例(类似于 type-graphql 存储库中的一个): https://github.com/hrvojepavlinovic/apollo-federation-type-graphql

【讨论】:

以上是关于TypeGraphql 与 Apollo 联合是不是可行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 TypeGraphQL 在浏览器中为 Apollo 本地状态生成 typedef 和解析器

TypeGraphQl 是不是自动格式化 SQL 查询?

如何在 VS Code 中调试我的 typegraphql 解析器?

父服务关闭时,Apollo 联合网关无法加载

下一个 Apollo 客户端不发送 Cookie

Passport (oAuth2) 如何与 GraphQL (TypeGraphQL) 一起使用?