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

Convert GraphQL shorthand notation to respective object?

我正在开发一个 GraphQL 服务器设置,它可以解析从字符串传递给它的类型,我正在寻找一种将字符串转换为适当对象的解决方案。比如传入这里的字符串:

type User { id: String, name: String }

我的函数将 return 等价于 运行 此代码:

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

这里的关键是不可知论,因此我还可以传入 say、接口和其他 shorthand 并使其 return 成为适当的对象。我已经使用 graphql_language.parse(str) 函数从 graphql/language 模块 bu 实现了抽象语法树,但我不确定从这里去哪里。

GitHub 上的参考 GraphQL-JS 实现已经有一个函数 buildASTSchema,它采用解析的类型模式并创建一组 JavaScript 对象。因此,了解如何执行此操作的最佳方法是在 GitHub 上查阅该源代码:https://github.com/graphql/graphql-js/blob/master/src/utilities/buildASTSchema.js

或者,也许您的工具可以使用该功能构建。由于该存储库由核心 GraphQL 团队维护,您可以非常确信它会随着规范的新增内容而保持最新。

根据评论编辑:如果您要做的是从类型语言字符串生成可执行的 GraphQL schema/server,那么您可以使用 [=12= 中的 generateSchema 函数] 包,如此处记录:http://docs.apollostack.com/apollo-server/generate-schema.html