如何嵌套 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 中提取数据来填充我的图表,所以想根据 site
与 user
等对各个部分进行分组,但我不见了尝试嵌套解析器时很明显。我做错了什么?
没有 'free' 嵌套在 graphql 中 ...嵌套 > 下一级深度 > 下一个类型 ... 站点解析器,site.page 解析器 ... 还有自己的站点 ID(用于客户端缓存) , rebuild/adjust 所有客户代码等 ...
命名空间应该更好:sitePage
、siteOptions
、userProfile
、userSettings
...使用别名(或在文件中替换)在客户端重命名。
我在 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 中提取数据来填充我的图表,所以想根据 site
与 user
等对各个部分进行分组,但我不见了尝试嵌套解析器时很明显。我做错了什么?
没有 'free' 嵌套在 graphql 中 ...嵌套 > 下一级深度 > 下一个类型 ... 站点解析器,site.page 解析器 ... 还有自己的站点 ID(用于客户端缓存) , rebuild/adjust 所有客户代码等 ...
命名空间应该更好:sitePage
、siteOptions
、userProfile
、userSettings
...使用别名(或在文件中替换)在客户端重命名。