为什么我的GraphQL查询没有调用我的解析器

时间:2018-04-12 16:52:24

标签: javascript graphql resolver

我在Apollo博客上关注this tutorial(这里是my forked repo),而且我已经过了一整天了,仍然可以&# 39;弄清楚为什么我的旋转变压器没有被使用,所以在这里求助。尽管我已经知道了,但我已经完全按照教程的说法进行了尝试。

我能够从模拟中返回数据,所以到目前为止的一切都在工作。

这是简单的schema.js:

const resolvers = {
  Query: {
    getAuthor(_, args) {
      console.log("Author resolved!");
      return ({ id: 1, firstName: "Hello", lastName: "world" });
    },
    allAuthors: () => {
      return [{ id: 1, firstName: "Hello", lastName: "world" }];
    }
  },
  Author: {
    posts: (author) => {
      return [
        { id: 1, title: 'A post', text: 'Some text', views: 2 },
        { id: 2, title: 'A different post', text: 'Different text', views: 300 }
      ];
    }
  },
  Post: {
    author: (post) => {
      return { id: 1, firstName: 'Hello', lastName: 'World' };
    }
  }
};

export default resolvers;

我的resolvers.js文件:

query {
  getAuthor {
    firstName
  }
}

鉴于我正在返回静态对象,因此无需担心同步性问题,因此对我查询的原因有任何疑问:

{
  "data": {
    "getAuthor": null
  }
}

返回null?

Println

1 个答案:

答案 0 :(得分:0)

变化:

Query: {
    getAuthor(_, args) {
      console.log("Author resolved!");
      return ({ id: 1, firstName: "Hello", lastName: "world" });
    },

为:

Query: {
    getAuthor(root, {_, args}) {
      console.log("Author resolved!");
      return ({ id: 1, firstName: "Hello", lastName: "world" });
    },

root并没有很好地记录,但是当您对基本模式类型进行查询时,必须包含它。您正在尝试返回作为GraphQL API入口点的作者类型,因为getAuthor是根查询,因此您必须包含root。

结帐https://www.howtographql.com/graphql-js/2-a-simple-query/。阅读名为:

的部分
  

查询解析流程

它更好地解释了根对象。