2017-04-12 10 views
1

実行中のGraphQLベースのサーバがあり、GraphiQLを使用して適切にテストすることができました。しかし、私はRelayの実装を理解することができません。RelayはどこからGraphQLのスキーマをフェッチしますか?

GraphQLはサーバ側であるため、スキーマがクライアント側のネットワーク層を介してリレーする方法はどのようになっていますか?または、同じGraphQLをどのように指していますか?

答えて

0

少し余計な作業が必要です。基本的には、シリアライズされたバージョンのスキーマをサーバー側のファイルにダンプしてから、そのファイルをクライアントに移動し、バベルのコンパイル中にインクルードする必要があります。 Facebookにはbabel pluginがあり、Relayがスキーマについて知るために、このファイルをバンドルに組み込みます。

編集:ここであなたは、あなたがnpm install babel-relay-pluginに持っていると含まれていることを取得した後JSON

import { graphql } from 'graphql' 
import { introspectionQuery, printSchema } from 'graphql/utilities' 

/* 
    generates json of our schema for use by relay 
*/ 
export default function (schema) { 
    return new Promise((resolve, reject) => { 
    graphql(schema, introspectionQuery).then(result => { 
     if (result.errors) { 
     console.error(`ERROR introspecting schema: ${result.errors}`) 
     reject(new Error(result.errors)) 
     } else { 
     resolve({ json: result, graphql: printSchema(schema) }) 
     } 
    }) 
    }) 
} 

にスキーマファイルをダンプする方法については、スニペットがある、あなたのバベルのプラグインで(おそらくのWebPACKの設定では、もしそのあなたはそれを使用しています)。

関連する問題