如何联合提供相同类型的两个阿波罗服务

How to federate two apollo services that provide the same type

我是 apollo 的新手,我有两个 apollo 服务,我想使用 apollo federation 来联合它们:

产品服务:

extend type Query {
  job(id: String!): Job
}

type Seo {
  title: String! 
  description: String! 
  keywords: String! 
}

type Product @key(fields: "id")  {
  id: ID!
  title: String!
  seo: Seo!
}

员工服务:

extend type Query {
  staffMember(id: String!): StaffMember
}

type Seo {
  title: String! 
  description: String! 
  keywords: String! 
}

type StaffMember @key(fields: "id")  {
  id: ID!
  title: String!
  seo: Seo!
}

如何在两个对象的响应对象中使用类型 Seo?创建接口 Seo 并实现 StaffMemberSeo 和 ProductSeo 的正确过程是正确的,还是有注释允许我在两个服务中定义完全相同的类型?

一个服务必须拥有该类型。在该服务中使用@key 指令。在引用服务中使用@extend,并包含一个存根类型,其中包含该服务使用的字段。

将其视为 SQL 数据库中的外键。