問題タブ [graphql-js]
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.
nested - graphql - ミューテーションでクエリを使用する - ネストされたオブジェクトを作成する
post
私はいくつかの埋め込みを持つ非常に単純なモデルを持っていますcomments
新しいcomment
ものをpost
post
与えられた を返すように定義されたクエリが既にあるのでid
、次のミューテーション構文を機能させたいと思いました。
しかし、私はそれを機能させる方法を見つけることができないようです。私が変異していても、出力タイプがpost
addComment であることは、フィールドpost
が持つべきものと見なされます。
皆さんは何か考えがありますか?
ありがとう
graphql - データを再フェッチせずに NODE_DELETE を使用する
a を使用するNODE_DELETE
には親が必要であり、実際に接続の親を返すには:
削除時のリレー エラー: RelayMutationQuery: ファット クエリのフィールド名が無効です
残念ながら、これを使用すると、ネストされたすべてのアイテムが再フェッチされます。これは、私のユースケースでは受け入れられません。
すべてのデータを再取得せずに接続/リストからアイテムを削除する方法はありますか? ネストされたエッジをフェッチしないようにすると、ネストされたオブジェクトは空のオブジェクトになります。
graphql - 並べ替えられた接続に対する楽観的な応答の作成
RelayJSで接続を「並べ替える」最良の方法は何ですか?
私のユーザー インターフェースでは、ユーザーが 2 つのアイテムを「交換」できるようにしていますが、その周りに突然変異を作成するのは少し注意が必要です。
私が今行っているのは単純な方法です。つまりFIELDS_CHANGE
、ノード自体を変更するために使用しています。
それは機能しますが、問題は楽観的な更新を書くことができないことです。IDのリストをgraphqlサーバーに渡すことはできますが、実際のデータが必要なため、楽観的更新では機能しません。
したがって、「接続」インターフェースをモックアウトする必要があると思いますが、残念ながら、それでも機能しません。並べ替えたノードを getOptimisticResponse に「コピー」しましたが、無視されているようです。データは実際のサーバー応答と一致します。(ID は簡略化)
オリジナル:
(何もしません): 楽観的な応答:
サーバーの応答:
何を与える?それは同等です(カーソルを除く)。カーソルを追加しても、まだ機能しません。
私は何を間違っていますか?また、ID を接続にモックする簡単な方法はありますか?
また、余談ですが、このデータを断片的に取得する方法はありますか? 現在、2 つのアイテムを並べ替えると、ミューテーション構成のためにリスト全体が再要求されます。で「スワップをシミュレート」できると思いますがRANGE_ADD
、もっと簡単な方法はありますか?RANGE_DELETE
node.js - リクエストボディをGraphQLコンテキストに渡す方法は?
本文の一部にデコードする必要がある JWT が含まれているため、現在、リクエスト本文をコンテキストに取得しようとしています。ただし、次のことを試みると、コンテキストが未定義になります。
req からログアウトしましたが、そこに body が表示されませんでした。私はreact-reachというライブラリを使用しています。リクエストの本文に以下を追加します。
本文にあるクエリ/ミューテーションが解釈され実行されているため、本文が解釈されていることがわかります。コンテキストに渡されたときにそれを見つけることができないようです。
graphql - GraphQLの短縮表記をそれぞれのオブジェクトに変換しますか?
文字列から渡されたタイプを解析できるGraphQLサーバーのセットアップに取り組んでおり、文字列を適切なオブジェクトに変換するソリューションを探しています。たとえば、次の文字列が渡された場合:
私の関数は、このコードを実行するのと同等のものを返します:
ここで重要なのは不可知論であることです。そのため、たとえばインターフェイスやその他の省略表現を渡して、適切なオブジェクトを返すようにすることもできます。graphql/language
関数を使用してモジュール buから抽象構文ツリーを達成するところまでgraphql_language.parse(str)
到達しましたが、ここからどこへ行くべきかわかりません。
node.js - クエリロジックをgraphql-sequelizeベースのセットアップに追加するには?
これは、 GraphQL にクエリを実行し、今年 200 日以上学校に通ったすべての生徒を取得する簡単なシナリオです。
私は学生続編モデル、一致するGraphQLオブジェクト、引数として日のintを受け入れる学生クエリを持っています{学生(日:200)}
私が明らかにしようとしているのは、ロジックを実装することです例として、カウンターが 200
を超えています。
簡単なクエリ定義の例は次のようになります。
お気づきのように、この構造では、クエリにロジックを挿入できません... GraphQl と Sequelize を使用した経験がある場合、これは非常に一般的な状況です...解決するための助けをいただければ幸いです.
乾杯
半開き
relayjs - リレーとの接続エラー
ブラウザ コンソールに次の警告が表示されます。
クエリのサーバー要求は
App
、次の理由で失敗しました:
未定義のプロパティ「長さ」を読み取ることができません
_posts40BFVD:posts(first:10) {
^^^
それが私が得た唯一の情報であり、これ以上エラーや参照はありません。その理由は何ですか?
このコードはRelay-starter-kitWidget
からのものです。すべてのコードをに置き換えただけPost
です。すべてがスターターとほぼ同じであるため、原因はデータベース コードのどこかにあると思います。
しかし、同じ構造を返すため、問題がわかりませんgetUserPosts()
:オブジェクトの配列..
なにが問題だったの?
getUserPosts()
promise を返しました (コードをブロックするのはおそらく悪い考えです) が、コールバックはありませんでした。私の意見ではconnectionFromArray()
、コードの実行は続行されましたが、getUserPosts()
まだデータがなかったため、システム全体が失敗しました。
考えられる解決策の 1 つ
とにかくBabelとJavaScriptの「将来の機能」を使用するので、async
andを使用することにしawait
ました。しかし、まだ問題がありgetUserPosts()
、空の配列が返されました。
await
次に、async
関数内で別の関数が呼び出された場合、別の関数も同様に呼び出される必要があることを発見しました。async
そうしないと、すべてawait-s
失敗します。動作する私の最終的な解決策は次のとおりです。
それが最善の方法であるかどうかはまだわかりません。私の論理では、ノードでは可能な限り async を使用する必要がありますが、私はノードの専門家からはほど遠いと言っています。詳細がわかり次第、質問を更新します。
Relayを使用してこのデータベースクエリの状況に対処するためのより良い方法、または推奨される方法があるかどうかを知りたい.