带有整数查询参数的 RelayJS 不变冲突

RelayJS Invariant Violation with integer query parameter

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

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

Uncaught Error: Invariant Violation: GraphQLFragmentPointer: Value for the argument to story on query Route should be a string, but it was set to 10. Check that the value is a string.

问题是我实际上希望它是 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})

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

看来根字段限制严重,目前只能无参数,单字符串参数或多字符串参数,直接与抓取的对象ID相连。

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