如何将GraphQLSchema对象转换为类型定义

时间:2018-05-03 09:54:31

标签: graphql graphql-js

假设我有一个GraphQL Schema,如:

type author {
    id: Int
    name: String
    rating: Int  
}

您可以使用此类型定义生成可以查询的可执行模式。

但是如果我没有上面的类型定义,但只有通过内省查询获得的GraphQLSchema对象,我该如何生成上述类型定义?

我查看了具有printSchema方法的graphql / utilities,它接受GraphQLSchema对象并打印字符串。但我似乎无法单独过滤特定节点的输出,因为我不想要整个架构。解析字符串输出是不可取的。

赞赏指出正确的方法。

1 个答案:

答案 0 :(得分:0)

printSchema不同,文档中没有提及,但graphql-js导出printType方法完全是为了这个!见the sources。例如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参数中。