2016-06-26 16 views
0

中継宝探しチュートリアルを試していますが、npmを起動すると次のエラーが表示されますnpm run update-schemaを実行してスキーマを更新しました。GraphQL検証エラー

Uncaught Error: GraphQL validation error ``Cannot query field "game" on type "Query".`` in file `/home/tharaka/My Projects/relay-treasurehunt/js/routes/AppHomeRoute.js`. Try updating your GraphQL schema if an argument/field/type was recently added. 

は、ここでそれらがルートクエリの種類のフィールドのみであるため、あなたがnodeviewerのいずれかを通じて、すべてを照会する必要がありそうです、私のAppHomeRoute.js

import Relay from 'react-relay'; 

export default class extends Relay.Route { 
    static path = '/'; 
    static queries = { 
     game:() => Relay.QL`query { game }`, 
    }; 
    static routeName = 'AppHomeRoute'; 
} 
+0

サーバーサイドコードはどのように見えますか? 'Query' GraphQLObjectTypeは、' game'プロパティを持つオブジェクトを返すfuncを持つ 'fields'というプロパティを持つ必要があります。 –

+0

ここに、[完全なコード](https://github.com/tharakabimal/relay-treasurehunt) – TA3

答えて

0

内だものです。だから、多分これを試してください:あなたのdata/schema.jsファイルで

query { 
    viewer { 
    game 
    } 
} 
0

を...

var queryType = new GraphQLObjectType({ 
 
    name: 'Query', 
 
    fields:() => ({ 
 
    node: nodeField, 
 
    // Add your own root fields here 
 
    viewer: { 
 
     type: gameType, 
 
     resolve:() => getGame(), 
 
    }, 
 
    }), 
 
});

変更gameからviewerプロパティ

。この...

var queryType = new GraphQLObjectType({ 
 
    name: 'Query', 
 
    fields:() => ({ 
 
    node: nodeField, 
 
    // Add your own root fields here 
 
    game: { 
 
     type: gameType, 
 
     resolve:() => getGame(), 
 
    }, 
 
    }), 
 
});

のようにそのプロパティの名前は、あなたのホームのルート上のフラグメントでの照会しているフィールドを一致させる必要があります。代わりに、の代わりにviewerをリクエストするように経路を変更することができます。いずれにしても気分が良くなります。