我在浏览器中使用apollo-server并使用GraphiQL进行测试。我根据Apollo的GitHunt-API example设置了我的解析器,但是现场的解析器" review.extraStuff"永远不会被召唤。
GGLInstanceID
const rootResolvers = {
review(root, args, context) {
console.log('resolving review');
return {'HasErrors': true}
}
}
const extraStuff = (root, args, context) => {
console.log('resolving extraStuff');
return "yes";
}
rootResolvers.review.extraStuff = extraStuff;
export default {
RootQuery: rootResolvers
};
我知道Apollo知道我的extraStuff解析器,因为如果我设置" requireResolversForNonScalar"为了真实,我没有收到消息告诉我extraStuff缺少一个解析功能。我已经在架构和apolloExpress中间件中添加了日志记录,并且什么也没学到。
答案 0 :(得分:3)
我的问题是我不明白你传递给 makeExecutableSchema (来自graphql-tools)的解析器需要将你的所有类型映射到他们自己的解析器。换句话说,每个类型都应该在您传递给 makeExecutableSchema 的解析器对象中有一个顶级条目。
以下是我解决问题的方法:
const rootResolvers = {
review(root, args, context) {
console.log('resolving review');
return {'HasErrors': true}
}
}
const reviewResolvers = {
extraStuff(root, args, context) {
console.log('resolving extraStuff');
return "yes";
}
}
export default {
RootQuery: rootResolvers
Review: reviewResolvers
};
我的架构或其他任何地方都无需进行任何更改。