Graphql 如何将合并架构用于Apollo Server的远程架构
我在合并远程模式时遇到一些问题。作为基础,我采用了教程()中引用的Apollo GraphQL包。我想对以下体系结构进行原型化:Graphql 如何将合并架构用于Apollo Server的远程架构,graphql,apollo,apollo-server,graphql-tools,Graphql,Apollo,Apollo Server,Graphql Tools,我在合并远程模式时遇到一些问题。作为基础,我采用了教程()中引用的Apollo GraphQL包。我想对以下体系结构进行原型化: 2服务 1个将请求委托给这些服务的网关 我不想像阿波罗联盟那样使用解决方案 我想使用关注点分离模式 以下是两种服务的基本类型def: 公司架构: 类型查询{ 公司:公司 } 类型公司{ id:id! 名称:String } i18n模式: 类型查询{ i18n:i18n } I18N型{ id:id! 用户名:String } 类型公司{ id:id! i18n
- 2服务
- 1个将请求委托给这些服务的网关
- 我不想像阿波罗联盟那样使用解决方案
- 我想使用关注点分离模式
类型查询{
公司:公司
}
类型公司{
id:id!
名称:String
}
i18n模式:
类型查询{
i18n:i18n
}
I18N型{
id:id!
用户名:String
}
类型公司{
id:id!
i18n(id:id):i18n
}
这些服务实现相应的解析器。网关为这些服务生成远程方案并尝试合并它们。这就是导致一些问题的原因
const schema = mergeSchemas({
schemas: [executableI18NSchema, executableCompanySchema],
});
第一个问题是,数组中模式的顺序似乎很重要。如果executableCompanySchema是我可以正确查询公司数据的最后一个元素。当我将其移动到第一个位置时,我会收到这样的消息:“无法查询typeCompany
上的fieldname
,因为mergeSchemas
只从最后一个数组元素获取typedef,并覆盖前一个数组元素的once。我希望merge函数能够正确地合并给定的模式
所以我做了一些研究,发现在最近的graphql工具版本中存在一个stitchSchemas函数。所以我将它们更新到最新版本,现在stitchSchemas和mergeSchemas会返回合并模式的预期typeDefs等。看起来我已经取得了一些进展,但只要我尝试发出查询请求在游乐场中,我遇到一个错误:超过了最大调用堆栈大小。因此,Apollo服务器似乎与最新的graphql工具版本不兼容
有什么想法或想法吗?Hi@David,你解决了你的问题吗?我现在也遇到了类似的问题/