如何将 GraphQLSchema 对象转换为类型定义
How to Convert GraphQLSchema Object to Type Definitions
假设我有一个像这样的 GraphQL 架构:
type author {
id: Int
name: String
rating: Int
}
您可以使用此类型定义生成可在其上查询的可执行模式。
但是如果我没有上面的类型定义,只有通过内省查询得到的GraphQLSchema对象,如何生成上面的类型定义?
我检查了 graphql/utilities,它有一个 printSchema
方法,它接受一个 GraphQLSchema 对象并打印一个字符串。但我似乎无法单独过滤特定节点的输出,因为我不想要整个模式。解析字符串输出是不可取的。
感谢指出正确的方法。
不同于printSchema
it is not mentioned in the docs, but graphql-js exports printType
method exactly for this! See in the sources. For example with graphql-iso-date。
const { printType } = require('graphql');
const { GraphQLDate } = require('graphql-iso-date');
console.log(printType(GraphQLDate));
它打印:
"""
A date string, such as 2007-12-03, compliant with the `full-date` format
outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for
representation of dates and times using the Gregorian calendar.
"""
scalar Date
这可以简单地放在makeExecutableSchema
函数typeDefs
参数中。
假设我有一个像这样的 GraphQL 架构:
type author {
id: Int
name: String
rating: Int
}
您可以使用此类型定义生成可在其上查询的可执行模式。
但是如果我没有上面的类型定义,只有通过内省查询得到的GraphQLSchema对象,如何生成上面的类型定义?
我检查了 graphql/utilities,它有一个 printSchema
方法,它接受一个 GraphQLSchema 对象并打印一个字符串。但我似乎无法单独过滤特定节点的输出,因为我不想要整个模式。解析字符串输出是不可取的。
感谢指出正确的方法。
不同于printSchema
it is not mentioned in the docs, but graphql-js exports printType
method exactly for this! See in the sources. For example with graphql-iso-date。
const { printType } = require('graphql');
const { GraphQLDate } = require('graphql-iso-date');
console.log(printType(GraphQLDate));
它打印:
"""
A date string, such as 2007-12-03, compliant with the `full-date` format
outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for
representation of dates and times using the Gregorian calendar.
"""
scalar Date
这可以简单地放在makeExecutableSchema
函数typeDefs
参数中。