如何嵌套 graphql 解析器以便对它们进行分组

How to nest qraphql resolvers so as to group them

我在 GraphQL 中包装了一系列 REST API,但我无法让解析器工作。

我的类型定义

const typeDefs = `
  type Page {
    id: String
    path: String!
    title: String!
    heading: String
    type: String
    html: String
    summary: String
  }

  type Site {
    page(path: String!): Page
  }

  type Query {
    site: Site
  }`

和我的解析器

const resolvers = {
  Query: {
    site: {
      page: async (_root, { path }) => getPage(path)
    }
  }
}

如果我尝试这个查询

{
  site {
    page(path: "/services/research-request") {
      id
      path
      title
      html
      type
      summary
    }
  }
}

我回来了

{
  "data": {
    "site": null
  }
}

但是,如果我不将页面嵌套在站点中

const typeDefs = `
  type Page {
    id: String
    path: String!
    title: String!
    heading: String
    type: String
    html: String
    summary: String
  }

  type Query {
    page(path: String!): Page
  }`

并使用解析器

const resolvers = {
  Query: {
    page: async (_root, { path }) => getPage(path)
  }
}

然后我试试这个查询

{
  page(path: "/services/research-request") {
    id
    path
    title
    html
    type
    summary
  }
}

我回来了,没错,

{
  "data": {
    "page": {
      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
      "path": "/services/research-request",
      "title": "Research | Requests",
      "html": "<p>This is a really well put together Research Requests page<p>\n",
      "type": "page",
      "summary": "A short piece of summary text"
    }
  }
}

我将从许多 API 中提取数据来填充我的图表,所以想根据 siteuser 等对各个部分进行分组,但我不见了尝试嵌套解析器时很明显。我做错了什么?

没有 'free' 嵌套在 graphql 中 ...嵌套 > 下一级深度 > 下一个类型 ... 站点解析器,site.page 解析器 ... 还有自己的站点 ID(用于客户端缓存) , rebuild/adjust 所有客户代码等 ...

命名空间应该更好:sitePagesiteOptionsuserProfileuserSettings ...使用别名(或在文件中替换)在客户端重命名。