Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 如何将合并架构用于Apollo Server的远程架构_Graphql_Apollo_Apollo Server_Graphql Tools - Fatal编程技术网

Graphql 如何将合并架构用于Apollo Server的远程架构

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

我在合并远程模式时遇到一些问题。作为基础,我采用了教程()中引用的Apollo GraphQL包。我想对以下体系结构进行原型化:

  • 2服务
  • 1个将请求委托给这些服务的网关
  • 我不想像阿波罗联盟那样使用解决方案
  • 我想使用关注点分离模式
以下是两种服务的基本类型def:

公司架构:

类型查询{
公司:公司
}
类型公司{
id:id!
名称:String
}
i18n模式:

类型查询{
i18n:i18n
}
I18N型{
id:id!
用户名:String
}
类型公司{
id:id!
i18n(id:id):i18n
}
这些服务实现相应的解析器。网关为这些服务生成远程方案并尝试合并它们。这就是导致一些问题的原因

const schema = mergeSchemas({
    schemas: [executableI18NSchema, executableCompanySchema],
});
第一个问题是,数组中模式的顺序似乎很重要。如果executableCompanySchema是我可以正确查询公司数据的最后一个元素。当我将其移动到第一个位置时,我会收到这样的消息:“无法查询type
Company
上的field
name
,因为
mergeSchemas
只从最后一个数组元素获取typedef,并覆盖前一个数组元素的once。我希望merge函数能够正确地合并给定的模式

所以我做了一些研究,发现在最近的graphql工具版本中存在一个stitchSchemas函数。所以我将它们更新到最新版本,现在stitchSchemas和mergeSchemas会返回合并模式的预期typeDefs等。看起来我已经取得了一些进展,但只要我尝试发出查询请求在游乐场中,我遇到一个错误:超过了最大调用堆栈大小。因此,Apollo服务器似乎与最新的graphql工具版本不兼容


有什么想法或想法吗?

Hi@David,你解决了你的问题吗?我现在也遇到了类似的问题/