Делегирование схемы GraphQL: info.mergeInfo не определено - PullRequest
0 голосов
/ 10 декабря 2018

Интересно, есть ли ловушка при использовании info.mergeInfo при делегировании распознавателя.Чтобы объяснить, что я пытаюсь сделать, давайте предположим, что схема похожа на:

type Repository {
    id: Int!
    commits: [Commit!]!
}
type Commit {
    id: Int!
    repository: Repository!
}

Я пытаюсь реализовать запрос, подобный следующему:

query {
    RepositoryByCommit($id: Int!) {
        commit(id: $id) {
            repository {
                id
            }
        }
    }
}

С определителем типа:

Query: {
    repository: (_, { id }) => db.getRepository(id),
    commit: (_, { id }) => db.getCommit(id)
},
Commit: {
    repository: (repository, args, context, info) {
        return info.mergeInfo.delegate({ // <-- mergeInfo is undefined here
            operation: 'query',
            fieldName: 'repository',
            args: {
                id: context.commitRawDBEntity.repositoryId
            }
        })
    }
}

Теперь согласно документации по GraphQl-Tools должен быть набор функций, доступных в info.mergeInfo для всех распознавателей.Но в моем случае нет свойства с именем info.mergeInfo или чего-либо подобного.

Стоит отметить, что я использую makeExecutableSchema из graphql-tools для обслуживания этой конечной точки GraphQL, поэтому у меня была причина предположить,эти утилиты graphql каким-то образом добавят эту функциональность ко всем распознавателям.

Я все делаю неправильно?Почему в моем резольвере нет объекта mergeInfo?Есть ли лучшие способы добиться разрешения родительского объекта?

Спасибо!

...