2

我对 Relay 比较陌生,所以这可能是我犯的一个简单的错误,但我已经寻找了一段时间,但我没有找到任何关于我遇到的问题的信息。

这是我从我的应用程序中得到的错误:

未捕获的错误:不变违规:GraphQLFragmentPointer:story查询参数的值Route应该是一个字符串,但它被设置为10。检查该值是否为字符串。

问题是我实际上希望它是10并且不希望它是字符串。我是否配置错误?

这是我的 GraphQL 架构:

var queryType = new GraphQLObjectType({
    name: 'Query',
    fields: () => ({
        node: nodeField,
        story: {
            type: storyType,
            args: {
                storyID: {
                    description: 'Story ID',
                    type: GraphQLInt
                }
            },
            resolve: (root, {storyID}) => {
                if (storyID) {
                    return Story.get(storyID)
                } else {
                    return Story.get(10)
                }
            }
        },
    }),
});

这是我定义的中继路线:

export default class extends Relay.Route {
  static queries = {
    story: () => Relay.QL`
      query {
        story(storyID: $storyID)
      }
    `,
  };

  static paramDefinitions = {
    storyID: {
        required: false
    },
  };

  static routeName = 'StoryRoute';
};

这就是我实例化它的方式:

let route = new Route({storyID: 10})
4

1 回答 1

2

好吧,看来我终于想通了。

似乎根字段受到严重限制,目前只能没有参数,单个字符串参数或多个字符串参数,直接与获取的对象的 ID 连接。

在此处查找更多信息:https ://github.com/facebook/relay/issues/112 和此处:https ://github.com/facebook/relay/issues/94

于 2015-09-19T15:58:24.443 回答