如何将 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参数中。