2

私はリレーに比較的慣れていないので、これは私が犯した簡単な間違いかもしれませんが、すでにしばらく探していましたが、私が抱えている問題に関する情報は見つかりませんでした.

これは、アプリケーションから得られるエラーです。

キャッチされないエラー: 不変違反: 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 に答える