مقدمه
MongoDB محبوب ترین پایگاه داده NoSQL است—MongoDB داده ها را در مجموعه ها ذخیره می کند. رکوردهای مجزا در مجموعه اسناد نامیده می شوند که ساختاری با ارزش کلیدی مشابه داده های JSON دارند. MongoDB به دلیل عملکرد، انعطاف پذیری و ویژگی های مقیاس پذیری ترجیح داده می شود.
مانگوس چیست؟
Mongoose یک کتابخانه مدلسازی دادههای شی مبتنی بر وعده (ODM) برای چارچوب Node.js است. Mongoose نحوه تعامل شما با پایگاه داده MongoDB را ساده می کند. این به شما امکان می دهد طرحواره های MongoDB را ایجاد و مدل کنید. به این ترتیب از نوشتن پیچیده پرس و جوها/طرحواره های پایگاه داده جلوگیری می کنید. Mongoose به شما این امکان را می دهد که داده هایی را که می خواهید در MongoDB ذخیره کنید مدل کنید.
این راهنما به شما کمک می کند تا بفهمید چگونه MongoDB را با استفاده از Mongoose به Node.js متصل کنید.
پیش نیاز:
برای پیروی از این راهنما، مطمئن شوید که Node.js روی رایانه شما نصب شده است. MongoDB بر روی رایانه شما نصب شده یا بر روی یک حساب ابری MongoDB Atlas راه اندازی شده است. دانش اولیه ایجاد سرورهای Node.js. پستچی نصب شده است. راه اندازی یک پروژه Node.js Mongoose برای ایجاد یک پروژه Node.js، به پوشه مورد نظر خود بروید و npm init -y را اجرا کنید. سپس بسته های زیر را نصب کنید: Express — برای ایجاد یک سرور HTTP Node.js. Mongoose – یک ODM برای MongoDB در Node.js.
npm install mongoose --save
برقراری ارتباط با Mongoose و MongoDB در Node.js برای برقراری ارتباط با MongoDB با استفاده از 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 یک اتصال به جایی که نام پایگاه داده شما است ایجاد می کند. مطمئن شوید که URI صحیحی را وارد کنید که به MongoDB نصب شده محلی یا ابر MongoDB Atlas.mongodb://localhost:27017test متصل می شود.
در نهایت تابع connectDB را صادر کنید:
module.exports = connectDB;
فایل db.js را بیان و وارد کنید:
const express = require('express');
const connectDB = require('./db');
میان افزار اکسپرس و تجزیه کننده را اضافه کنید:
// 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}`));
یک Schema را با استفاده از 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
در اینجا، ما یک تابع MySchema ایجاد می کنیم که متد mongoose.Schema را اجرا می کند. این روش طرحی را تنظیم می کند که Mongoose روی MongoDB اجرا می کند. برای ایجاد طرحواره، فایل ها را به سند خود اضافه کنید. در این مورد، ما دو فیلد اضافه می کنیم:
یک نام – در داخل کد بالا، این فیلد به صورت رشته ای با حداکثر طول پنجاه کاراکتر ایجاد می شود. الزامی روی 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)
برای افزودن یک کار جدید، یک درخواست POST با استفاده از Postman به صورت زیر ارسال کنید:
برای بازیابی وظایف اضافه شده، یک درخواست GET با استفاده از Postman به صورت زیر ارسال کنید:
با دسترسی به پایگاه داده MongoDB خود می توانید وظایف اضافه شده را مشاهده کنید: