GraphQL 字段的解析器未被调用
GraphQL field's resolver not getting called
我正在使用 apollo-server 并在我的浏览器中使用 GraphiQL 进行测试。我根据 Apollo 的 GitHunt-API example 设置了我的解析器,但从未调用字段 "review.extraStuff" 上的解析器。
解析器
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
};
架构
const Review = `
type Review {
HasErrors: Boolean
extraStuff: String
}
`
const RootQuery = `
type RootQuery {
review(id: String!): Review
}
`;
const SchemaDefinition = `
schema {
query: RootQuery
}
`;
来自 GraphiQL 的查询结果
附加信息
我知道 Apollo 知道我的 extraStuff 解析器,因为如果我将 "requireResolversForNonScalar" 设置为 true,我不会收到一条消息告诉我 extraStuff 缺少解析函数。我已将日志记录添加到模式和 apolloExpress 中间件,但什么也没学到。
我的问题是我不明白您传递给 makeExecutableSchema(来自 graphql-tools)的解析器需要将您的所有类型映射到它们自己的解析器。换句话说,每种类型都应该在传递给 makeExecutableSchema.
的解析器对象中有一个 top-level 条目
以下是我解决问题的方法:
解析器
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
};
我的架构或其他任何地方都不需要更改。
我正在使用 apollo-server 并在我的浏览器中使用 GraphiQL 进行测试。我根据 Apollo 的 GitHunt-API example 设置了我的解析器,但从未调用字段 "review.extraStuff" 上的解析器。
解析器
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
};
架构
const Review = `
type Review {
HasErrors: Boolean
extraStuff: String
}
`
const RootQuery = `
type RootQuery {
review(id: String!): Review
}
`;
const SchemaDefinition = `
schema {
query: RootQuery
}
`;
来自 GraphiQL 的查询结果
附加信息
我知道 Apollo 知道我的 extraStuff 解析器,因为如果我将 "requireResolversForNonScalar" 设置为 true,我不会收到一条消息告诉我 extraStuff 缺少解析函数。我已将日志记录添加到模式和 apolloExpress 中间件,但什么也没学到。
我的问题是我不明白您传递给 makeExecutableSchema(来自 graphql-tools)的解析器需要将您的所有类型映射到它们自己的解析器。换句话说,每种类型都应该在传递给 makeExecutableSchema.
的解析器对象中有一个 top-level 条目以下是我解决问题的方法:
解析器
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
};
我的架构或其他任何地方都不需要更改。