GraphQL字段的解析器未被调用

时间:2017-01-18 19:31:59

标签: express graphql apollo-server

我在浏览器中使用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
};

来自GraphiQL的查询结果

Query result from GraphiQL

其他信息

我知道Apollo知道我的extraStuff解析器,因为如果我设置" requireResolversForNonScalar"为了真实,我没有收到消息告诉我extraStuff缺少一个解析功能。我已经在架构和apolloExpress中间件中添加了日志记录,并且什么也没学到。

1 个答案:

答案 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
};

我的架构或其他任何地方都无需进行任何更改。