获取具有 n 深包装器类型堆栈的架构
Get schema with n-deep wrapper type stack
我正在通过 GraphQL 从数据库获取数据。有两种类型:Group
和 Person
。组有一个字段 people
,它是 Person
个对象的列表。
我正在尝试使用 GraphQL 的内置 introspection 从服务器获取模式。我遇到的问题是 people
字段是一个不可空类型包装一个列表类型包装一个不可空类型,我必须使用这个冗长的查询:
{
__type(name: "Group") {
name
fields {
name
type {
name
kind
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}
要获取此架构:
{
"data": {
"__type": {
"name": "Group",
"fields": [
{
"name": "people",
"type": {
"name": null,
"kind": "NON_NULL",
"ofType": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "Person",
"ofType": null
}
}
}
}
}
]
}
}
}
除了是一个不方便且难以阅读的查询之外,它不是通用的,我必须知道架构中包装类型的最大深度才能构造它。
有没有办法在架构中获取所有包装器类型,而不考虑深度?
不幸的是,没有办法通用地做到这一点。没有最大深度,因为 GraphQL 支持用 List 包装一个类型任意次数。所以虽然通常你只会看到
[String!]!
这也是一个有效的类型
[[[[[[[[[[[[String]!]!]!]!]!]!]!]!]!]!]!]!
你几乎必须选择一个合理的深度并顺其自然。对于它的价值,this 是官方 "complete" 自省查询的样子。它的深度为七。
我正在通过 GraphQL 从数据库获取数据。有两种类型:Group
和 Person
。组有一个字段 people
,它是 Person
个对象的列表。
我正在尝试使用 GraphQL 的内置 introspection 从服务器获取模式。我遇到的问题是 people
字段是一个不可空类型包装一个列表类型包装一个不可空类型,我必须使用这个冗长的查询:
{
__type(name: "Group") {
name
fields {
name
type {
name
kind
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}
要获取此架构:
{
"data": {
"__type": {
"name": "Group",
"fields": [
{
"name": "people",
"type": {
"name": null,
"kind": "NON_NULL",
"ofType": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "Person",
"ofType": null
}
}
}
}
}
]
}
}
}
除了是一个不方便且难以阅读的查询之外,它不是通用的,我必须知道架构中包装类型的最大深度才能构造它。
有没有办法在架构中获取所有包装器类型,而不考虑深度?
不幸的是,没有办法通用地做到这一点。没有最大深度,因为 GraphQL 支持用 List 包装一个类型任意次数。所以虽然通常你只会看到
[String!]!
这也是一个有效的类型
[[[[[[[[[[[[String]!]!]!]!]!]!]!]!]!]!]!]!
你几乎必须选择一个合理的深度并顺其自然。对于它的价值,this 是官方 "complete" 自省查询的样子。它的深度为七。