【问题标题】:how to obtain .graphql file from GraphQLSchema javascript object?如何从 GraphQLSchema javascript 对象获取 .graphql 文件?
【发布时间】: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 不可行?

标签: javascript graphql relayjs graphql-js


【解决方案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 对象,因此您可以跳过前两个步骤并打印架构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2014-09-29
    • 2018-11-01
    • 2021-07-06
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多