導入
MongoDBは最も人気のあるNoSQLデータベースです。MongoDBはデータをコレクションに格納します。コレクション内の個々のレコードはドキュメントと呼ばれ、JSONデータに似たキーと値の構造を持ちます。MongoDBは、そのパフォーマンス、柔軟性、そしてスケーラビリティの点で高く評価されています。.
マングースとは何ですか?
Mongooseは、Node.jsフレームワーク向けのPromiseベースのオブジェクトデータモデリング(ODM)ライブラリです。Mongooseは、MongoDBデータベースとのやり取りを簡素化します。Mongooseを使えば、MongoDBスキーマの作成とモデリングが可能です。これにより、複雑なデータベースクエリやスキーマを記述する必要がなくなります。Mongooseを使えば、MongoDBに保存したいデータをモデリングできます。.
このガイドは、Mongoose を使用して MongoDB を Node.js に接続する方法を理解するのに役立ちます。.
前提条件:
このガイドを実行するには、コンピューターにNode.jsがインストールされている必要があります。MongoDBがコンピューターにインストールされているか、MongoDB Atlasクラウドアカウントにセットアップされている必要があります。Node.jsサーバー作成の基本知識が必要です。Postmanがインストールされている必要があります。Node.js Mongooseプロジェクトのセットアップ Node.jsプロジェクトを作成するには、任意のフォルダーに移動し、npm init -yを実行します。次に、以下のパッケージをインストールします。Express - Node.js HTTPサーバーを作成します。Mongoose - Node.jsでMongoDBのODMを作成します。.
npm install mongoose --save
Node.js で Mongoose および MongoDB と通信する Mongoose を使用して Mongoose と通信するには、db.js というファイルを作成し、次のように Mongoose 接続を構成します。
Mongoose ライブラリをインポートします。
const connectDB = async () => {
try {
const conn = await mongoose.connect(`mongodb://localhost:27017/test`, {
useNewUrlParser: true,
});
console.log(`MongoDB Connected: {conn.connection.host}`);
} catch (error) {
console.error(error.message);
process.exit(1);
}
}ここで使用するMongoDBはローカルで実行されています。そのため、Mongooseはデータベース名への接続を作成します。ローカルのMongoDBインストールまたはMongoDB Atlasクラウド(mongodb://localhost:27017test)への正しいURIを入力してください。.
最後に、connectDB 関数をエクスポートします。
module.exports = connectDB;db.js ファイルを指定してインポートします。
const express = require('express');
const connectDB = require('./db'); Express ミドルウェアとパーサーを追加します。
// express
const app = express();
//body parser
app.use(express.json());connectDB() 関数を実行します。
//connect to database
connectDB();サーバールートを追加します:
// routes
// We will add these routes later in this guide.ローカルホスト ポートでプログラムを実行します。
onst PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port {PORT}`));Mongooseを使用してスキーマをモデル化する
モデルはMongoDBデータベースのコレクションスキーマを定義します。model.jsファイルとMongooseコレクションスキーマを以下のように作成します。
const {
Schema,
model
} = require("mongoose");
const MySchema = new Schema({
name: {
type: String,
required: true,
maxlength: 50
},
createdAt: {
type: Date,
default: Date.now,
},
});
const TaskModel = model("test", MySchema)
module.exports = TaskModelここでは、mongoose.Schemaメソッドを実行する関数MySchemaを作成します。このメソッドは、MongooseがMongoDB上で実行するスキーマを設定します。スキーマを作成するには、ドキュメントにファイルを追加します。今回は、以下の2つのフィールドを追加します。
名前 – 上記のコードでは、このフィールドは最大50文字の文字列として作成されます。Required は true に設定されており、すべてのドキュメントにこのフィールドが必須であることを示します。
createAt フィールドは、ドキュメントが作成された時刻を指定します。デフォルトでは、作成日のタイプとして現在の日付が使用されます。.
Mongoose スキーマを使用してデータベースにデータを追加します。
データベースにデータを追加するには、controller.js ファイルを作成します。.
モデル ファイルから MySchema をインポートします。const Task = require('./model');
タスクセットにタスクを追加します。これにより、POSTパスが指定されます。.
exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}すべてのタスクを回復:
このコードをcontroller.jsファイルに追加してください。これによりGETルートが指定されます。.
exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}
exports.getTasks = async (req, res) => {
//get all the data in the model and return it as response
try {
Task.find()
.then((allTasks) => {
res.status(200)
.json({
success: true,
allTasks
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
message: "Cant fined ",
error
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error",
error: error.message
})
}
}ルートを作成:
上記のコントローラーを実行するためのルートを作成します。routes.jsという新しいファイルを作成し、以下のコードを追加します。
const router = require("express")
.Router()
const controller = require('./controller')
router
.post('/', controller.createTask)
.get('/', controller.getTasks)
module.exports = router最後に、server.js ファイル内でこれらのルートを実行します。.
const router = require('./routes')
app.use('/tasks', router)新しいタスクを追加するには、次のように Postman を使用して POST リクエストを送信します。
追加されたタスクを取得するには、次のように Postman を使用して GET リクエストを送信します。
MongoDB データベースにアクセスすると、追加されたタスクを確認できます。












