Graphql-resolver
GraphQL-リゾルバー
リゾルバーは、GraphQLクエリの応答を生成する関数のコレクションです。 簡単に言えば、リゾルバーはGraphQLクエリハンドラーとして機能します。 GraphQLスキーマのすべてのリゾルバ関数は、以下に示す4つの位置引数を受け入れます-
リゾルバ関数の例を以下に示します-
以下は、位置引数とその説明です-
Sr.No. | Arguments & Description |
---|---|
1 |
root 親フィールドのリゾルバーから返された結果を含むオブジェクト。 |
2 |
args クエリのフィールドに渡される引数を持つオブジェクト。 |
3 |
context これは、特定のクエリのすべてのリゾルバーによって共有されるオブジェクトです。 |
4 |
info これには、フィールド名、ルートからフィールドへのパスなど、クエリの実行状態に関する情報が含まれています。 |
リゾルバー結果の形式
GraphQLのリゾルバは、以下に示すように異なるタイプの値を返すことができます-
Sr.No. | Arguments and Description |
---|---|
1 |
null or undefined これは、オブジェクトが見つからなかったことを示します |
2 |
array これは、スキーマがフィールドの結果がリストであることを示している場合にのみ有効です |
3 |
promise リゾルバは、多くの場合、データベースまたはバックエンドAPIからのフェッチなどの非同期アクションを実行するため、約束を返すことができます |
4 |
scalar or object リゾルバは他の値を返すこともできます |
図
リゾルバを理解するための簡単なアプリケーションを作成しましょう。 これにより、サーバーからIDで学生を照会するためのスキーマが作成されます。 学生データはフラットファイルに保存され、 notarealdb というノードモジュールを使用してデータベースを偽造し、フラットファイルから読み取ります。
以下は、単純なアプリケーションを作成するための段階的なプロセスです-
ステップ1-プロジェクトに必要な依存関係をダウンロードしてインストールする
ステップ2-スキーマを作成する
プロジェクトフォルダresolver-appにschema.graphqlファイルを追加し、次のコードを追加します-
スキーマファイルは、ユーザーが_greeting、students_、および_studentById_を照会できることを示しています。 特定のIDを持つ生徒を取得するには、*データ型ID!*を使用します。 _students_フィールドは生徒の配列を返し、_greeting_は単純な文字列値を返します。
ステップ3-リゾルバーを作成する
プロジェクトフォルダにファイル resolvers.js を作成し、次のコードを追加します-
ここで、_studentById_は3つのパラメーターを取ります。 この章で説明したように、_studentId_はargsから取得できます。ルートにはQueryオブジェクト自体が含まれます。 特定の生徒を返すには、studentsコレクションのidパラメーターを使用してgetメソッドを呼び出す必要があります。
ここで、_greeting、students、studentById_は、クエリを処理するリゾルバです。 * students resolver関数*は、データアクセスレイヤーから学生のリストを返します。 モジュール外のリゾルバー関数にアクセスするには、module.exportsを使用してQueryオブジェクトをエクスポートする必要があります。
ステップ4-アプリケーションを実行する
server.jsファイルを作成します。 環境設定の章の手順8を参照してください。 ターミナルでコマンドnpm startを実行します。 サーバーは9000ポートで稼働します。 ここでは、GraphiQLをクライアントとして使用して、アプリケーションをテストします。
ブラウザを開き、URL http://localhost:9000/graphiql を入力します。 エディタで次のクエリを入力します-
上記のクエリの出力は以下のとおりです-