У меня есть API-шлюз, который объединяет схемы из 3-х конечных точек, и у меня есть тип рейтинга с полем игрока, который разрешает строку, но я хочу иметь возможность расширить тип рейтинга, чтобы я мог изменить преобразователь, чтобы он возвращал тип игрокаа не только идентификатор игрока, вот схема рейтинга:
type Rating {
id: ID
ratingType: RatingTypes
rating: String
player: String
}
В другой конечной точке у меня есть схема Player, и в моем API-шлюзе я пытаюсь расширить тип рейтинга следующим образом:
const linkTypeDefs = `
extend type Rating {
player: Player
}
`;
Затем я объединяю схемы и создаю еще один преобразователь для игрока:
const allSchemas = await Promise.all(endpoints.map(ep => getIntrospectSchema(ep)))
const mergedSchema = mergeSchemas({
schemas: [...allSchemas, linkTypeDefs],
resolvers: mergeInfo => ({
Rating: {
player: {
fragment: `fragment RatingFragment on Rating { player }`,
resolve (parent, args, context, info ) {
const id = parent.player
return mergeInfo.delegate(
'query',
'player',
{
id
},
context,
info
)
}
}
}
})
})
Проблема в том, что нельзя определить игрока в схеме дважды, и я не очень хочупросто переименовать плеер во что-то еще в расширении, потому что я хочу попытаться сохранить его в чистоте