如何从 GraphQLSchema javascript 对象获取 .graphql 文件?
Posted
技术标签:
【中文标题】如何从 GraphQLSchema javascript 对象获取 .graphql 文件?【英文标题】:how to obtain .graphql file from GraphQLSchema javascript object? 【发布时间】:2018-05-24 10:04:08 【问题描述】:我正在使用graphql-js 创建一个新的graphQL 模式,但不会通过http 提供服务,将用作本地graphql 服务。我需要以 json 格式获取此 graphql 的架构,以将其与另一个架构合并。我一直在使用 get-graphql-schema 从服务器获取架构,但这在我的情况下不起作用。
我想要的是从我在 make new GraphQLSchema( query, mutation );
之后获得的 GraphQLSchema
对象中获取带有架构的 json
我确信这很简单,但我有点坚持。谢谢!
【问题讨论】:
为什么get-graphql-schema
不可行?
【参考方案1】:
您可以在 localhost graphql 服务器上使用 get-graphql-schema。
【讨论】:
他特别说这个包对他不起作用 @vbranden 也许我误解了.. 你不是@Fernando 试图从 localhost 以 json 格式获取你提供的 graphql 模式吗?如果是这样,为什么get-graphql-schema
不能满足您的需求?
因为他试图从本地 GraphQLSchema
对象而不是 graphql 服务器端点创建 .graphql 文件。 get-graphql-schema
需要一个端点。
@vbranden 好的,抱歉,我认为 local graphql service 他的意思是 localhost 服务器【参考方案2】:
由于您想要本地创建的 GraphQLSchema
对象中的 .graphql 文件,您可以使用 printSchema
打印它然后将其写入文件
import printSchema from 'graphql';
import Query from './Query';
import fs from 'fs';
const schema = new GraphQLSchema(
query: Query
);
const fileData = printSchema(schema);
fs.writeFile('/path/to/schema.graphql', fileData, error =>
// handle error
);
get-graphql-schema
包只能与graphql-server
端点一起使用。该包首先发送自省查询以获取 JSON 表示,然后使用 graphql-js
重构客户端(非可执行)模式
buildClientSchema
然后使用 printSchema
最终输出可以放入 .graphql 文件中的模式语言表示。由于您已经在本地拥有 GraphQLSchema
对象,因此您可以跳过前两个步骤并打印架构。
【讨论】:
以上是关于如何从 GraphQLSchema javascript 对象获取 .graphql 文件?的主要内容,如果未能解决你的问题,请参考以下文章
错误:无法使用来自另一个模块或领域的 GraphQLSchema“[object GraphQLSchema]”
graphql.GraphQLSchema:使用啥类型的参数来获取查询以传递给 mongo db.collection.find 来解析查询