在Apollo GraphQl Federation中,如何在没有@external指令的情况下应用@requires逻辑?

在Apollo GraphQl Federation中,如何在没有@external指令的情况下应用@requires逻辑?,graphql,apollo-federation,Graphql,Apollo Federation,我有三个微服务:阿波罗GraphQl联盟中的服务A、服务B和服务C。所有服务都有数据库模型,即模型A、模型B、模型C。每个服务都有自己的数据库 模型A有一个保存B模型ID数组的字段。模型B有一个保存C模型ID数组的字段cIds 我写了一个查询,返回a的列表。在每个a中有B的列表,B的每个元素都有C的列表 服务A的架构(typeDef): type A @key(fields: "id") { id: ID! bIds: [ID] } 服务B的模式: type B @

我有三个微服务:阿波罗GraphQl联盟中的服务A、服务B和服务C。所有服务都有数据库模型,即模型A、模型B、模型C。每个服务都有自己的数据库

模型A有一个保存B模型ID数组的字段。模型B有一个保存C模型ID数组的字段cIds

我写了一个查询,返回a的列表。在每个a中有B的列表,B的每个元素都有C的列表

服务A的架构(typeDef):

type A @key(fields: "id") {
  id: ID!
  bIds: [ID]
}
服务B的模式:

type B @key(fields: "id") {
  id: ID!
  cIds: [ID]
}
extend type A @key(fields: "id") {
  id: ID! @external
  bList: [B]
}
服务C的模式:

type C @key(fields: "id") {
  id: ID!
}
extend type B @key(fields: "id") {
  id: ID! @external
  cList: [C]
}
这很简单。我的问题是,我需要模型a中的一个字段,该字段返回模型C的列表,该列表由bList的所有cList元素组成,如下所示:

extend type A @key(fields: "id") {
  id: ID! @external
  bList: [B]
  derivedCList: [C] @requires(fields: "bList")
}

derivedCList的解析器必须从A获取bList frield。我如何实现它?@requires的字段必须是@external。bList不是外部的。它在服务B中有解析器。如果我在服务B中用带有@external decellerative的bList字段扩展类型A,Apollo会对此抛出异常。

也许这应该是Apollon Federation的功能请求?在我看来,将
@external
添加到
bList
是可行的,因为它位于C的外部