Как объединить две службы 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.