Graphql - 如何获取选定字段的类型(字符串、整数、ID 等)
Posted
技术标签:
【中文标题】Graphql - 如何获取选定字段的类型(字符串、整数、ID 等)【英文标题】:Graphql - How to get type (String, Int, ID etc..) of a selected field 【发布时间】:2021-10-27 10:55:28 【问题描述】:我有以下 graphql 查询
const GET_USER = gql`
query user()
user
firstName
lastName
`
我使用graphql
提供的visit
函数遍历查询以找到firstName
和lastName
字段的类型
visit(GET_USER,
Field(node)
console.log(node)
这些字段似乎只包含以下信息。
kind: 'Field',
alias: undefined,
name: kind: 'Name', value: 'firstName' ,
arguments: [],
directives: [],
selectionSet: undefined
,
kind: 'Field',
alias: undefined,
name: kind: 'Name', value: 'lastName' ,
arguments: [],
directives: [],
selectionSet: undefined
这并没有告诉我firstName
和lastName
的类型
我希望我可能不得不使用相关的schema file
来获取该查询的类型,但我不知道该怎么做,如果有人可以帮助我,那就太好了。
【问题讨论】:
【参考方案1】:使用自省
不确定您使用的是什么平台,但 introspection 是您用来获取特定类型信息的平台。
自省是查询当前 API 架构中可用资源的能力。
用户类型示例:
__type(name: "User")
name
kind
示例响应:
"data":
"__type":
"name": "User",
"kind": "OBJECT"
您也可以使用自省来钻取字段:
__type(name: "User")
name
fields
name
type
name
kind
示例响应:
"data":
"__type":
"name": "User",
"fields": [
"name": "id",
"type":
"name": null,
"kind": "NON_NULL",
"ofType":
"name": "ID",
"kind": "SCALAR"
,
"name": "name",
"type":
"name": null,
"kind": "NON_NULL",
"ofType":
"name": "String",
"kind": "SCALAR"
]
【讨论】:
以上是关于Graphql - 如何获取选定字段的类型(字符串、整数、ID 等)的主要内容,如果未能解决你的问题,请参考以下文章
仅返回选定字段 React Native / GraphQL / Amplify
GraphQL API (Astra DB) - 现有表和字段的列表
GraphQL SPQR - 如何获取客户端使用查询请求的字段列表