Blogs

ノード、アポロサーバー、MongoDB によるグラフィル API の構築

January 28, 2024

進化し続けるバックエンド開発環境の中で、MongoDBは柔軟性とスケーラビリティを提供するNoSQLデータベースソリューションとして際立っています。このガイドでは、MongoDB を Node.js GraphQL API に統合するプロセスを段階的に説明し、堅牢なデータストレージと取得の可能性を解き放ちます。

なぜモンゴDB?

データベース銀河のスターである MongoDB は、その柔軟性とスケーラビリティで知られる NoSQL ソリューションです。従来のリレーショナル・データベースとは異なり、MongoDB はデータをドキュメント指向の形式で保存するため、複雑で進化するデータ構造を迅速に処理できます。

MongoDB の主なメリット

  • フレキシブルスキーマ: MongoDB の動的スキーマにより、変化するデータ要件に簡単に適応できます。
  • 水平方向のスケーラビリティ: サーバーを追加することでデータベースを簡単に水平方向にスケーリングし、最適なパフォーマンスを確保できます。
  • ドキュメント指向: データは柔軟な JSON 形式の BSON ドキュメントに保存されるため、複雑な構造での作業が簡単になり、対応しやすくなります。
  • さまざまなデータ型のサポート: MongoDB は、テキストから地理空間情報まで、さまざまなデータタイプをサポートしています。
  • ハイパフォーマンス: インデックス作成とクエリ機能により、迅速かつ効率的なデータ取得が可能になります。
  • 集約フレームワーク: MongoDB の強力な集約フレームワークを使用して、データベース内で高度な分析と変換を実行します。
  • 自動シャーディング: MongoDBの組み込みシャーディングにより、クラスター間でデータを均等に分散し、スケーラビリティを向上させます。

MongoDB をグラフの API に追加するための 5 つのステップ

  1. Node.js GraphQL API のセットアップ
  2. モンゴデータベースとマングースの統合
  3. マングースモデルの定義
  4. GraphQL リゾルバーの実装
  5. GraphQL リゾルバーでの MongoDB の活用

各ステップについて話し合い、実装を始めましょう

Node.js GraphQL API のセットアップ

ここでは、graphql API の設定についてはあまり詳しく説明しません。これが記事へのリンクです ( Node.js GraphQL API をセットアップ )そしてこれがすでに設定されているAPIのGitHubリポジトリリンクです GitHub リポジトリ

モンゴデータベースとマングースの統合

1。をインストールします。 マングース 私たちのプロジェクトへのライブラリ

npm install mongoose --save  # install the mongoose library

2。データベースを node.js アプリケーションに接続します。

// connect the mongodb database
// Database URL from atlas cloud or local database URL
const DATABASE_URL: string = `mongodb://localhost:27017/test`
mongoose.connect(DATABASE_URL)
            .then(() => {
                console.log('Database connected successfully')
            })
            .catch((e: any) => {
                console.log('Error connecting : ', e?.message)
            })

この例では、アプリケーションを正常に起動した後、データベースに接続しました。データベースをアプリケーションに接続するタイミングと場所は、必要に応じて選択できます。

このステップの出力は次のとおりです。

マングースモデルの定義

Mongoose モデルの定義には 2 つのステップがあります。

1。スキーマの定義: ドキュメントの形状を定義します

2。モデルの定義: モデルは、基盤となる MongoDB データベースからドキュメントを作成したり読み込んだりします

import mongoose, {Schema} from 'mongoose';

// defining post schema
const postSchema =  new Schema({
    title:String,
    content:String
});

// defining post model
const Post = mongoose.model("Post", postSchema);

export default Post;

ザの ポストスキーマ 変数は、タイトルフィールドとコンテンツフィールドを含む投稿文書の構造を定義します。どちらも文字列型です。その後、mongoose.model () を使って Post モデルが作成され、「」に関連付けられます。ポスト「コレクションと ポストスキーマ スキーマ。最後に、Post モデルがエクスポートされて他のモジュールで使用できるようになり、MongoDB データベースとのシームレスなやり取りが可能になり、投稿に対する CRUD 操作が容易になります。

GraphQL リゾルバーの実装

graphqlリゾルバーの定義と実装の方法はすでにわかっています。まとめが必要な場合はこちらの記事を読んでください ( GraphQL リゾルバー )

GraphQL リゾルバーでの MongoDB の活用

これで、リゾルバーでデータベース接続を使用するために必要な設定がすべて完了しました。2つのリゾルバーを実装して、graphql APIでのMongoDBの使用方法を理解しましょう

  1. データベースへの投稿の作成
  2. データベースからすべての投稿を取得する

MongoDB で投稿を作成する

createPost: async (_parent: any, args: any, _context: any) => {
            // create new post document
            const post = new Post(args);
            //save post document and return the saved document
            return await post.save();
        }

CreatePost リゾルバーは次の 3 つのパラメーターを受け取ります。 _親引数、および _コンテキスト。を使用する 引数 パラメータを指定すると、提供されたデータに基づいて新しい投稿文書が作成されます。次に、を使用して投稿文書をデータベースに保存します。 保存 () メソッドを実行し、保存されたドキュメントを返します。

出力:

データベースから投稿を取得

posts: async () => {
            // fetch all posts from database via Post model
            return await Post.find();
        }

このGraphQLリゾルバーは、クエリを実行してデータベースからすべての投稿を取得します ポスト モデル。を使用する 検索 () メソッドでは、データベースに保存されているすべての投稿ドキュメントを取得し、GraphQL クライアントに返します。

出力:

MongoDBは、バックエンド開発の分野でダイナミックな力を持っていることが証明されています。柔軟なスキーマ、水平方向のスケーラビリティ、ドキュメント指向の性質により、適応性とパフォーマンスを要求するアプリケーションに最適な選択肢となっています。多様なデータ型、高性能機能、自動シャーディングなどの高度な機能をサポートする MongoDB は、堅牢でスケーラブルな Node.js GraphQL API を作成する上で信頼できる味方です。MongoDB の使用を開始するにあたり、シームレスなデータ保存と取得の可能性は無限大です。

ハッピーコーディング!🚀🔍💻
これが私たちのGitHubリポジトリへのリンクです- GraphQL と MongoDB