Как объединить две службы apollo, которые предоставляют один и тот же тип

Я новичок в apollo, и у меня есть две службы apollo, которые я хочу объединить с помощью федерации apollo:

Сервисное обслуживание:

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!
}

StaffService:

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 или есть аннотация, которая позволяет мне определять один и тот же тип в двух сервисах?

1 ответ

Решение

Тип должен принадлежать одной службе. В этом сервисе используйте директиву @key. В ссылочных службах используйте @extend и включите заглушку типа с полями, используемыми этой службой.

Думайте об этом объявлении как о внешнем ключе в базе данных SQL.

Другие вопросы по тегам