Graphql 使用n-deep包装器类型堆栈获取架构
我通过GraphQL从数据库中获取数据。有两种类型:Graphql 使用n-deep包装器类型堆栈获取架构,graphql,introspection,graphql-schema,Graphql,Introspection,Graphql Schema,我通过GraphQL从数据库中获取数据。有两种类型:组和人。组有一个字段people,它是Person对象的列表 我正在尝试使用GraphQL的内置功能从服务器获取模式。我遇到的问题是,people字段是一个不可空类型,包含一个不可空类型的列表类型,我必须使用这个冗长的查询: { __type(name: "Group") { name fields { name type {
组
和人
。组有一个字段people
,它是Person
对象的列表
我正在尝试使用GraphQL的内置功能从服务器获取模式。我遇到的问题是,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支持用列表包装类型任意次数。所以,虽然通常你只会看到
[String!]!
这也是一个有效的类型
[[[[[[[[[[[[String]!]!]!]!]!]!]!]!]!]!]!]!
你几乎必须选择一个合理的深度,并随着它滚动。值得一提的是,这是官方的“完整”内省查询。它的深度为7。也就是说,如果您想要更简单的解析类型、字段等的方法,您可以打开一个内省结果并使用它。