Переопределить распознаватель для поля типа в graphql - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть 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
                    )
                }
            }
        }
    })
})

Проблема в том, что нельзя определить игрока в схеме дважды, и я не очень хочупросто переименовать плеер во что-то еще в расширении, потому что я хочу попытаться сохранить его в чистоте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...