GraphQL方案委派:未定义info.mergeInfo

时间:2018-12-10 17:14:32

标签: graphql apollo apollo-server

我想知道在委派解析器时是否有使用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对象?有更好的方法可以解决父实体吗?

谢谢!

0 个答案:

没有答案