問題タブ [relayjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ORM に対するページネーションのリレー接続をどのように定義しますか?
Relayのすべてのドキュメントに目を通しましたが、ORMを使用してRelay接続を構築する方法についての簡単な説明はないようです。すべての例はconnectionFromArray
、データをメモリに保存する場合は問題ない方法を使用しているように見えますが、データをデータベースに保存する場合は、接続のページネーションが機能するために必要な情報をどのように提供しますか?
javascript - Relay は、ミューテーション応答に含める outputFields を決定するために何を使用しますか?
TODO の例を変更して、最初の React/Relay アプリケーションを作成しています。パラメータ bookCount を持つオブジェクト Distributor に独自のミューテーションを追加するところまで来ました。このミューテーションは AddBook と呼ばれ、単純に書籍の数を 1 増やします。この時点で、ミューテーションはエラーなく実行され、楽観的に bookCount を正しく 1 増やしますが、サーバーからの応答を受け取ると、モデルの変更を元に戻します。これは、サーバーからの応答に、指定した出力フィールドが不思議なことに含まれていないためだと思います。
これが私の突然変異です:
outputFields に「distributor」フィールドが含まれていますが、graphql 応答には「distributor」データが含まれていません。
Graphql の応答は次のとおりです。
mutateAndGetPayload 関数は呼び出されるが、ディストリビューター解決関数は呼び出されないことを確認しました。
outputFields のすべてのフィールドが graphql 応答に含まれ、outputFields 内のすべての解決関数が呼び出されて、応答に適切なパラメーターが入力されることを期待していましたが、そうではありません
生成された schema.json には、AddBookPayload で指定した outputFields が含まれているため、これは特に混乱を招きます。
graphql - Relay/graphql で特定のリスト項目の追加情報を取得する
Relay と GraphQL を使用して、ビューアを返すスキーマと、関連付けられたドキュメントの埋め込みリストがあるとします。ルート クエリ (フラグメントで構成される) は、次のようになります。
これにより、ユーザーと、それに関連付けられているすべてのグループのリストを表示できます。
ここで、ユーザーがそのリスト項目をクリックして、その特定のリスト項目に関連付けられたコメントを表示するように展開できるようにしたいとしましょう。これらのコメントを受け取ることができるように、リレー ルートのクエリをどのように再構築すればよいですか? グループ エッジにコメント エッジを追加すると、すべてのグループのコメントが取得されませんか?
または、ルート クエリを変更して特定のグループを検索する必要がありますか?
私の懸念は、特に、これを のコンテキスト内で使用することですrelay
。つまり、展開されたリスト アイテム (またはアイテム) のコメントのみをフェッチするルート クエリを効率的に構築するにはどうすればよいでしょうか。また、既に存在するキャッシュされたデータを利用し、ミューテーションを行うときに更新されます。上記の例は、特定の展開されたグループに対して機能する可能性がありますが、すべてのグループ項目のフィールドをフェッチせずに複数のグループを同時に展開する方法がわかりません。
laravel - Relay/GraphQL のどこに CSRF トークンを配置しますか?
Laravel サーバーで Relay と GraphQL をセットアップしようとしています。GraphQL を提供するように Laravel を正常にセットアップしました。
過去に、jQuery で ajax 呼び出しを行うために、master.blade.php に以下を追加しました。
そして、私のmain.jsファイルに以下を追加します:
私の GraphQL エンドポイントは現在、トークンの不一致例外を返しています。リレーは、jQuery.ajax と同様の方法で csrf-token をサーバーに渡す必要があるように思えます。それはどこに行くのですか?
reactjs - 整数クエリパラメーターを使用したRelayJS不変違反
私はリレーに比較的慣れていないので、これは私が犯した簡単な間違いかもしれませんが、すでにしばらく探していましたが、私が抱えている問題に関する情報は見つかりませんでした.
これは、アプリケーションから得られるエラーです。
キャッチされないエラー: 不変違反: GraphQLFragmentPointer:
story
クエリの引数の値Route
は文字列である必要がありますが、に設定されていました10
。値が文字列であることを確認してください。
問題は、実際には文字列にしたいの10
ですが、文字列にしたくないということです。設定が間違っていませんか?
これは私のGraphQLスキーマです:
これは私が定義したリレー ルートです。
そして、これが私がそれをインスタンス化する方法です:
relayjs - globalIdField をいつ使用するか
私が知る限り、変数が変更されているとき、リレーはクエリの nodeDefitions に依存しています。
id フィールドを持つすべてのオブジェクトが有効なノードであるように見えます。ただし、次のようなデータがある場合:
データはドキュメント ベースのソリューションに格納され、Folder オブジェクトは User オブジェクトにネストされます。ただし、Folder オブジェクトには ID が与えられているため、他のオブジェクトが User のコンテキストで Folder オブジェクトを参照できます。
Folder が nodeInterface を実装し、globalIdField を使用する場合、globalId から Folder オブジェクトをフェッチする方法を見つける必要があります。オブジェクトを見つけるか、データを正規化して、フォルダが独自のテーブルにあるようにします。nodeInterface を実装せず、id フィールドとして文字列を使用するだけの場合、Folder オブジェクトのいくつかのフィールドを変更しようとするとどうなりますか?
javascript - 在庫リレーからルーターを使用してリレーに移動するにはどうすればよいですか?
現在動作中の React/Relay アプリがあり、react-router-relay を使用してルーティングを追加したいと考えています。可能な限り最小限の変換を試みると、次のコードを参照してください。ログに理解できないエラーが表示されます。
この質問を表現する別の可能な方法は次のとおりです: プレーンなバニラ Relay の RelayRoutes.queries と react-router-relay のルートのクエリを指定する適切な方法の違いは何ですか?
reactjs - ファット クエリとツリー構造について
Relay のファット クエリの概念を理解するのにまだ苦労しています。特に、どのデータを再フェッチするかを決定する交差ロジックの部分についてです。
これまで、UserType
ルート クエリ ( という名前)viewer
を使用して単純な階層データ構造を構築してきました。この各プロジェクトには、任意にネストされたサブプロジェクト階層をモデル化する別のフィールド (タイプも) があります。projects
ProjectConnectionType
projects
ProjectConnectionType
また、2 つの高次の React コンポーネントがProjectList
あり、条件付きでフラグメントを展開することによって (リスト アイテム コンポーネント内でProjectListItem
Relay 変数を使用することによって)、この構造をレンダリングします。expanded
これまでのところ、これはうまく機能しており、非常に満足しています。トリッキーな部分は、AddProject
突然変異です。名前とparentProjectId
入力として (ルート プロジェクトの場合は null の可能性があります) を受け取り、サーバー側の適切な場所に新しいノードを作成するミューテーションを作成しました。その後、新しいもの (後でprojectEdges
使用して追加されます) とorを返す必要があるため、そこでも更新できます。RANGE_ADD
parentProject
viewer
subprojectCount
ビューア (一意のグローバル ルート クエリ ポイント) の場合、すべて正常に動作します。Relayは交差点を正しく計算し、サーバーから新しいデータを要求します。しかし、サブプロジェクトを追加しようとすると、(ミューテーション ID 以外に) 出力フィールドのない完全に空の応答が返されます。私の推測では、Relay はparentProject
フィールドを適切にマッピングする方法を知らないために交差点を間違えているようです。私はすでにそのための構成を追加しようとしましたが、ファットFIELDS_CHANGE
クエリparentProject: node(id: "$parentProjectId")
内でクエリを実行しようとしました(どちらも機能していませんでした)。
私は何が欠けていますか?ドキュメントを数回読んだことがありますが、まだミューテーションの概念を理解しておらず、すでにかなりばかげていると感じています。