問題タブ [graphql]
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.
relayjs - RANGE_ADD と組み合わせたファット クエリで指定されたデータを取得しないミューテーション?
私は理解しようとしていますRANGE_ADD
。のミューテーション構成にRANGE_ADD
必要なすべての情報を提供しました。命名規則を使用viewer
し、接続を 内にネストしますviewer
。以下は、私の完全なリレーミューテーションがどのように見えるかです...
idのフラグメントを提供しますviewer
。これは、実行時に 内getConfigs
に存在することがわかります。
GraphQL ミューテーション レスポンス ペイロードでCreateTeamPayload
は、viewer
フィールドが提供されているため、Relay は のミューテーション構成内で接続を利用できますRANGE_ADD
。また、 内CreateTeamPayload
では、新しいエッジが として提供されedge
ます。
これら 3 ビットの情報 (親のビューアー ID、接続情報、エッジ) だけで十分なようですRANGE_ADD
。また、Relay がミューテーション構成のためにデータにアクセスできるように、fat クエリを介してサーバーからこのデータを要求するようにします。
ただし、リレーは、ファットクエリで指定したものと、サーバーにディスパッチするものにミューテーション構成に必要なものを含めていないようです。Relay が要求しているのはclientMutationId
. これがRelayからのリクエストです...
そして、連鎖反応のように、これにより、ミューテーション構成のviewer
andedge
を期待している Relay がエラーをスローします...
Relayに含まれていた場合、これらの必須フィールドは完全にそこにある可能性があります。これが機能RANGE_ADD
するために同行する必要がありREQUIRED_CHILDREN
ますか? ミューテーションはサーバーに送信され、サーバー上にレコードが作成されます。クライアント側のミューテーション構成が変更されたデータをストアに組み込むことができないだけです。
graphql - GraphQLInterfaceType と GraphQLUnionType の実例
GraphQLInterfaceType
とをいつ使うべきか理解するのに苦労していますGraphQLUnionType
。
私はRTFMを持っています:
- http://graphql.org/docs/api-reference-type-system/#graphqluniontype
- https://github.com/mugli/learning-graphql/blob/master/7.%20Deep%20Dive%20into%20GraphQL%20Type%20System.md
これらが私の厚い頭を理解するのに役立つ場合、誰かが実際の例を提供できますか?
node.js - GraphQL サーバーでアクセス制御を実装するための適切なパターンは何ですか?
バックグラウンド:
User やその他のさまざまなモデルを含む一連のモデルがあり、その一部には User への参照が含まれています。私は、Graffiti-mongoose アダプターを使用する Mongo データベースに支えられた、Graffiti によって生成された GraphQL API を介してクエリを実行するために、これらのモデルを公開しています。私の現在の REST API (GraphQL に移行中) は、JSON Web トークンを使用してユーザーを認証し、アクセス制御を処理するためにサーバー側にいくつかのカスタム許可ロジックを持っています。
問題:
現在ログインしているユーザーに基づいて、GraphQL のオブジェクトへのアクセスを制限したいと考えています。一部のモデルは、認証されていない呼び出しによる読み取りにアクセスできる必要があります。他のほとんどのモデルは、それらを作成したユーザーのみがアクセスできる必要があります。Graffiti で生成された API を介してオブジェクトへのアクセス制御を管理する最良の方法は何ですか?
一般に、GraphQL のアクセス制御の適切なパターンはありますか? 特に、Graffiti でそれを行うための良い例やライブラリはありますか?
ノート:
graffiti-mongoose にプレフックとポストフックが実装されており、それらを使用して認証用の基本的なバイナリ チェックを実行できることを理解しています。より詳細なアクセス制御ロジックを GraphQL API に組み込む方法を知りたいです。将来的には、特定のユーザー グループによって作成されたモデル インスタンスにアクセスできる管理者などをサポートしたいと考えています (たとえば、所属に管理者のグループが含まれるユーザー)。
postgresql - GraphQL+Sequelize+CLS でエラーがスローされた後もトランザクションが自動コミットされる
コーディングに間違った部分があるかどうか疑問に思っています。一連の関数とチェックを実行しようとしていますが、満たされていない条件があれば、トランザクションをロールバックしたいと考えています。
私はstackoverflowのリファレンスを参照しています
新しいエラーをスローした後もトランザクションがコミットされます。
これが私のサンプルコーディングです。
私が持っているschema.jsで