我正在开发一个GraphQL服务器设置,它可以解析从字符串传入的类型,我正在寻找一个将字符串转换为适当对象的解决方案。例如,如果传入此处的字符串:
type User { id: String, name: String }
我的函数将返回运行此代码的equivelant:
new graphql.GraphQLObjectType({
name: 'User',
fields: {
id: { type: graphql.GraphQLString },
name: { type: graphql.GraphQLString },
}
});
这里的关键是不可知,所以我也可以传入说,接口和其他简写,让它返回适当的对象。我已经使用graphql/language
函数从graphql_language.parse(str)
模块中获得了抽象语法树,但我不确定从何处开始。
答案 0 :(得分:2)
GitHub上的参考GraphQL-JS实现已经有一个函数buildASTSchema
,它接受一个解析的类型模式并创建一组JavaScript对象。因此,了解如何操作的最佳方法是在GitHub上查阅源代码:documentation
或者,也许您的工具可以使用该功能构建。由于该存储库由核心GraphQL团队维护,因此您可以非常确信它将与规范的新增内容保持同步。
从评论中进行编辑:如果您尝试执行的操作是从类型语言字符串生成可执行的GraphQL架构/服务器,则可以使用generateSchema
包中的graphql-tools
函数,如此处所述:https://github.com/graphql/graphql-js/blob/master/src/utilities/buildASTSchema.js