Node.js Apollo Federated Gateway在尝试使用.NET Core GraphQL联邦子图时返回错误
我正在努力学习阿波罗联合会,所以我先看了他们的样本()。这个示例存储库工作得很好,我可以在Node.js中添加一个新服务作为子图 我想在.NETCore中添加一个新的服务作为子图,以扩展示例项目中定义的Node.js Apollo Federated Gateway在尝试使用.NET Core GraphQL联邦子图时返回错误,node.js,asp.net-core,graphql,apollo,apollo-federation,Node.js,Asp.net Core,Graphql,Apollo,Apollo Federation,我正在努力学习阿波罗联合会,所以我先看了他们的样本()。这个示例存储库工作得很好,我可以在Node.js中添加一个新服务作为子图 我想在.NETCore中添加一个新的服务作为子图,以扩展示例项目中定义的用户类型。为此,我使用创建了一个新服务 我的模式定义如下: extend type User @key(fields: "id") { id: ID! @external phone: String } GraphQL游乐场似乎工作正常,但当我尝试在网关中包
用户
类型。为此,我使用创建了一个新服务
我的模式定义如下:
extend type User @key(fields: "id") {
id: ID! @external
phone: String
}
GraphQL游乐场似乎工作正常,但当我尝试在网关中包含该服务时,出现以下错误:
unhandledPromisejectionWarning:error:无法在加载“用户服务”的服务定义http://localhost:5000/graphql: 语法错误:应为名称,找到“}”。
显然,这是因为如果不扩展查询类型,graphql dotnet server NuGet包(当前为5.0.2)不会生成正确的SDL。服务正常启动,我可以导航到UI游乐场
查询:
query {
_service {
sdl
}
}
{
"data": {
"_service": {
"sdl": "type Query {\r\n\r\n}\r\n\r\nextend type User @key(fields: \"id\") {\r\n id: ID! @external\r\n phone: String\r\n}\r\n"
}
},
"extensions": {}
}
结果(json):
query {
_service {
sdl
}
}
{
"data": {
"_service": {
"sdl": "type Query {\r\n\r\n}\r\n\r\nextend type User @key(fields: \"id\") {\r\n id: ID! @external\r\n phone: String\r\n}\r\n"
}
},
"extensions": {}
}
请注意,graphql dotnet在SDL中生成一个空的
类型查询{\r\n\r\n}
部分,该部分不应该存在,因为我没有在模式中扩展查询类型。我已经在graphql dotnet github项目中打开了一个应用程序
解决方法可以是使用新功能扩展查询类型,至少在问题解决之前是这样