January 28, 2024
進化し続けるバックエンド開発環境の中で、MongoDBは柔軟性とスケーラビリティを提供するNoSQLデータベースソリューションとして際立っています。このガイドでは、MongoDB を Node.js GraphQL API に統合するプロセスを段階的に説明し、堅牢なデータストレージと取得の可能性を解き放ちます。
データベース銀河のスターである MongoDB は、その柔軟性とスケーラビリティで知られる NoSQL ソリューションです。従来のリレーショナル・データベースとは異なり、MongoDB はデータをドキュメント指向の形式で保存するため、複雑で進化するデータ構造を迅速に処理できます。
各ステップについて話し合い、実装を始めましょう
ここでは、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 リゾルバー )
これで、リゾルバーでデータベース接続を使用するために必要な設定がすべて完了しました。2つのリゾルバーを実装して、graphql APIでの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