我对我的图表有横切关注,我需要在网关层而不是子图上聚合字段。我必须使用自定义指令
@aggregateme
标记所有子图中感兴趣的字段,以便我的同事能够轻松参与我的行为。 @tag(name: "aggregateme")
同样可以接受。当我的 Apollo 服务器/网关使用 @aggregateme
指令解析每个字段时,或,在 willSendResponse
上,我需要收集该字段中所有字段的 path.to.the.field
和 value
回应。
然而,问题。
buildSubgraphSchema
在我的子图中显示了我的自定义指令,但我使用 ApolloGateway({ supergraphSdl: ...subgraphDatas })
组成的联合模式会删除这些指令。 @tag
据称包含在超级图模式中,但是,在检查内存中的 GraphQL
模式实例时,我仍然无法在超级图模式中看到该指令。我还看到了 composeDirective,但怀疑这只存在于 graphos 中,而不是 javascript 网关中。executionDidStart
/ willResolveField
似乎没有在网关中运行。您建议如何在 ApolloGateway 中应用基于自定义指令的集中式聚合?
我正在使用所有最新的东西:
"@apollo/gateway": "2.9.3",
"@apollo/server": "4.11.2",
"@apollo/subgraph": "^2.9.3",
"@graphql-tools/schema": "10.0.11",
"@graphql-tools/utils": "10.6.2",
解决办法如下:
mapSchema
函数field.resolver
意味着!graphql#execute
。