Интересно, есть ли ловушка при использовании 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
?Есть ли лучшие способы добиться разрешения родительского объекта?
Спасибо!