2016-06-26 5 views
0

릴레이 보물 찾기 튜토리얼을 시도했지만 npm 시작을 실행하면 다음과 같은 오류가 발생합니다. npm 실행 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. 

여기 사람들은 루트 쿼리 유형에있는 유일한 필드이기 때문에, 당신이 node 또는 viewer 중 하나를 통해 모든 쿼리가 보인다 내 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(), 
 
    }, 
 
    }), 
 
});

변경 gameviewer 재산

. 이처럼 ... 해당 속성의

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

이름은 당신이 당신의 홈 경로에 조각에에 질의하고있는 필드 일치해야합니다. 대안으로 game 대신 viewer을 요청하도록 경로를 변경할 수 있다고 생각합니다. 어느 것이 든 기분이 나아집니다.