3

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

type User { id: String, name: String }

我的函数将返回运行此代码的等效项:

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

这里的关键是不可知论,所以我也可以传入 say、interface 和其他简写,让它返回适当的对象。我已经从graphql/language模块 bu using graphql_language.parse(str)function 中实现了抽象语法树,但我不确定从这里去哪里。

4

1 回答 1

2

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

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

从评论编辑:如果您尝试从类型语言字符串生成可执行的 GraphQL 架构/服务器,那么您可以使用包中的generateSchema函数,graphql-tools如此处所述:http: //docs.apollostack.com/阿波罗服务器/generate-schema.html

于 2016-05-27T17:17:23.883 回答