【发布时间】:2017-06-03 08:00:15
【问题描述】:
我正在使用 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 中间件中,但什么也没学到。
【问题讨论】:
-
extrastuff 是一个字符串,因此是一个标量
-
那么,您是说“requireResolversForNonScalar”无法捕捉到它?这是有道理的。
-
@w00t 想详细说明一下吗?我正在查看 graphql-tools 源代码,因为我的问题似乎出在 makeExecutableSchema 中。看起来标量字段的处理方式不同,但我仍然不清楚我的确切问题是什么。
-
尝试使该字段成为对象,看看是否可以使其工作?不幸的是,我还没有真正尝试过 graphql-tools :)
标签: express graphql apollo-server