将GraphQL速记符号转换为相应的对象?

将GraphQL速记符号转换为相应的对象?,graphql,graphql-js,Graphql,Graphql Js,我正在开发一个GraphQL服务器设置,它可以解析从字符串传递到其中的类型,我正在寻找一个解决方案,将字符串转换为适当的对象。例如,如果传入了此处的字符串: type User { id: String, name: String } 我的函数将返回运行此代码的等效值: new graphql.GraphQLObjectType({ name: 'User', fields: { id: { type: graphql.GraphQLString }, name: {

我正在开发一个GraphQL服务器设置,它可以解析从字符串传递到其中的类型,我正在寻找一个解决方案,将字符串转换为适当的对象。例如,如果传入了此处的字符串:

type User { id: String, name: String }
我的函数将返回运行此代码的等效值:

new graphql.GraphQLObjectType({
  name: 'User',
  fields: {
    id: { type: graphql.GraphQLString },
    name: { type: graphql.GraphQLString },
  }
});

这里的关键是不可知论,所以我也可以传入,比如,接口和其他速记,让它返回适当的对象。我已经使用
graphql\u language.parse(str)
函数从
graphql/language
模块bu中实现了抽象语法树,但我不确定从这里走到哪里。

GitHub上的参考graphql JS实现已经有了一个函数,
buildASTSchema
,它采用已解析的类型模式并创建一组JavaScript对象。因此,最好的方法是在GitHub上查阅源代码:

或者,您的工具可以使用该功能构建。由于该存储库是由核心GraphQL团队维护的,因此您可以非常有信心它将随着规范的新添加而更新


从注释编辑:如果您试图从类型语言字符串生成一个可执行的GraphQL架构/服务器,那么您可以使用
GraphQL tools
包中的
generateSchema
函数,如下所述:

我很好奇。您需要字符串到图形类型转换的场景是什么?我感兴趣的是构建一个允许类型本身的CRUD的系统,而不需要修改服务器上的代码。这看起来对我非常有用!如果在未来几天内没有更好的答案,这将是我接受的答案。谢谢要补充Stubailo的答案:graphql工具正是这样做的(以及更多),它不仅构建了一个对象,而且构建了一个可执行文件。这里有一句话值得商榷:哇@helfer,这对我更有用!也许你应该自己把它放在一个单独的答案里,或者斯图巴约可以把它编辑成他的答案。