【问题标题】:GraphQL validation errorGraphQL 验证错误
【发布时间】:2016-06-27 02:14:39
【问题描述】:

我正在尝试中继寻宝教程,但在运行 npm start 时出现以下错误。我确实通过运行 npm run update-schema 更新了我的架构。

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.

这是我的 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';
}

【问题讨论】:

  • 您的服务器端代码是什么样的? Query GraphQLObjectType 需要有一个名为 fields 的属性,其函数返回一个具有 game 属性的对象。

标签: javascript reactjs graphql relayjs


【解决方案1】:

您似乎必须通过nodeviewer 查询所有内容,因为这些是根查询类型上的唯一字段。所以不妨试试这个:

query {
  viewer {
    game
  }
}

【讨论】:

    【解决方案2】:

    在您的data/schema.js 文件中...

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

    viewer 属性更改为game。像这样……

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

    该属性的名称需要与您在 Home 路由的片段中查询的字段相匹配。我想作为替代方案,您可以更改路由以请求viewer 而不是game。做哪个感觉更好。

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 2023-03-09
      • 2016-10-18
      • 2020-08-29
      • 2019-12-23
      • 1970-01-01
      • 2020-09-03
      • 2020-05-28
      • 2020-09-24
      相关资源
      最近更新 更多