我想知道在委派解析器时是否有使用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 documentation,在info.mergeInfo
上应该为所有解析程序提供一组功能。但就我而言,没有info.mergeInfo
属性,也没有类似的属性。
值得一提的是,我正在使用makeExecutableSchema
中的graphql-tools
来服务此GraphQL端点,因此我有理由假设graphql-tools会以某种方式将该功能添加到所有解析器。
我做错了吗?为什么我的解析器中没有mergeInfo
对象?有更好的方法可以解决父实体吗?
谢谢!