将 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
我正在开发一个 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