2017-04-30 5 views
3

graphql-jsの依存関係を更新してから約1年が経過しています。スキーマ生成を簡略化するユーティリティがあることがわかりました:buildSchemaこの関数は、引数としてGraphQL言語の文字列としてスキーマ全体をとります。それは最高ですが、これをモジュール化する方法はありますか?私のスキーマは超小型ではなく、単一の.graphqlファイルに詰め込まれてしまいます。それぞれの型定義を独自のファイルに格納するためのユーティリティやパターンがありますか?各タイプは、独自のファイルで定義することができる方法`buildSchema`を使用する際にGraphQLスキーマをモジュール化する方法は?

const schema = makeExecutableSchema({ 
    typeDefs: [schema1, schema2, schema3, ...], 
    resolvers: resolvers, 
}); 

:あなたはgraphql-toolsパッケージを持っている場合は

+0

私はこれを行うことができるライブラリを書いています。https://github.com/graphql-factory/graphql-factory – vbranden

+0

ここでは、Apolloのgraphql-toolsを使用している場合、これを行う最善の方法に関する記事があります。https: //hackernoon.com/graphql-schemas-easier-better-structure-31677a640d18 –

答えて

2

することは、あなたはそうのようなスキーマをモジュール化するmakeExecutableSchemaを使用することができます。

+0

ここにドキュメントがあります:http://dev.apollodata.com/tools/graphql-tools/generate-schema.html#modularizing – stubailo

0

merge-graphql-schemasパッケージを使用すると、スキーマのモジュール性をさらに向上できます。 graphql-server-seed

プロジェクトの構造は、複数のファイルにあなたのタイプとレゾルバを分離することができます - ここで

は、モジュラーgraphqlサーバの種です。それが役に立てば幸い!その後、

const { makeExecutableSchema } = require('graphql-tools') 
const { glue } = require('schemaglue') 

const { schema, resolver } = glue('src/graphql') 

const executableSchema = makeExecutableSchema({ 
    typeDefs: schema, 
    resolvers: resolver 
}) 

そして:

0

あなたはアポロのgraphql-ツールを使用している場合は、その後、私はあなたのスキーマを構築するための最良の方法は、schemaglue.js(免責事項:私はこれを構築しました)を使用することを見つけましたあなたはこれに似たものを使用してスキーマとリゾルバを構築できるようになります:

- src/ 
    |__ graphql/ 
      |__ product/ 
      |  |__ schema.js 
      |  |__ resolver.js 
      | 
      |__ variant/ 
        |__ schema.js 
        |__ resolver.js 

- index.js 
- package.json 

私はこのhereに関する詳細な記事を書きました。

関連する問題