0

我正在使用 GraphQL 联合架构,并且正在尝试将新字段添加到扩展类型。例如,假设我在远程联合模式中有一个类型:

type Book {
   id: ID!
   authorFirstName: String
   authorLastName: String
}

我想根据它的数据扩展这种类型,例如:

extend type Book @key(fields: "id") {
   id: ID! @external
   authorFullName: String
}

在解析器中我会写:

Book: {
    authorFullName: async (parent) => {
       return `${parent.authorFirstName} ${parent.authorLastName}`
    }
}

但不幸的是,它不起作用。扩展模式只接收 ID 和 __typename,仅此而已。你知道我怎样才能不仅收到“id”而且收到其他必要的字段吗?

非常感谢!

4

1 回答 1

2

所以我想通了,我需要的是在扩展类型上添加必要的字段并用“@external”指令标记它们,并在计算字段中添加“@requires”指令和外部字段。

在我的示例中,解决方案是:(可以理解,联合外部架构没有更改。)

extend type Book @key(fields: "id") {
   id: ID! @external
   authorFirstName: String @external
   authorLastName: String @external
   authorFullName: String @requires(fields: "authorFirstName authorLastName")
}

正如我上面提到的那样,解析器保持不变,就是这样。

于 2020-11-19T16:01:07.830 回答