Graphql - 如何获取所选字段的类型(String、Int、ID 等)
Graphql - How to get type (String, Int, ID etc..) of a selected field
我有以下 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
来获取该查询的类型,但我不确定该怎么做,如果有人可以帮助我,那会很棒。
使用内省
不确定您使用的是什么平台,但 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 查询
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
来获取该查询的类型,但我不确定该怎么做,如果有人可以帮助我,那会很棒。
使用内省
不确定您使用的是什么平台,但 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"
}
}
}
]
}
}
}