Apollo服务器中的嵌套查询

时间:2019-06-11 15:59:37

标签: typescript graphql graphql-js apollo-server

我正在使用apollo-server构建GraphQL模式。我的模式有很多查询,我想将它们组合在一起。有没有一种按域对它们进行分组的方法,这样我就可以进行以下查询:

query {
  Books {
    getAll {
      ...
    }
    getByUser {
      ...
    }
  }
}

我可以使用graphql-dotnet来做到这一点,但是我不确定如何使用apollo-server来做到这一点。

1 个答案:

答案 0 :(得分:1)

给出类似的模式

type Query {
  books: Books
}

type Books {
  getAll: [Book!]!
}

type Book {
  id: ID!
  title: String!
}

您的解析器的外观应类似于:

const resolvers = {
  Query: {
    books: () => {
      return {}
    },
  },
  Books: {
    getAll: () => {
      # return list of books
    }
  }
}

books字段返回一个对象类型(Books),因此它是解析器必须返回一个对象,即使它是如上所示的空对象。如果该字段解析为null,则即使请求了它的所有子字段,也不会解析。通过返回一个空对象,我们确保子字段也将得到解析。