كيفية ربط MongoDB بـ NODE.JS باستخدام MONGOOSE؟

0 الأسهم
0
0
0
0

مقدمة

MongoDB هي أشهر قواعد بيانات NoSQL، حيث تخزن البيانات في مجموعات. تُسمى السجلات الفردية في المجموعة "مستندات"، وتتميز ببنية مفتاح-قيمة مشابهة لبيانات JSON. تُفضل MongoDB لأدائها ومرونتها وإمكانية التوسع فيها.

ما هو النمس؟

Mongoose هي مكتبة نمذجة بيانات كائنية (ODM) قائمة على الوعود لإطار عمل Node.js. تُبسط Mongoose طريقة تفاعلك مع قاعدة بيانات MongoDB، حيث تتيح لك إنشاء مخططات MongoDB ونمذجتها. هذا يُغنيك عن كتابة استعلامات/مخططات قواعد بيانات معقدة. كما تتيح لك Mongoose نمذجة البيانات التي ترغب في تخزينها في MongoDB.
سيساعدك هذا الدليل على فهم كيفية ربط MongoDB بـ Node.js باستخدام Mongoose.

المتطلبات الأساسية:

لمتابعة هذا الدليل، تأكد من تثبيت Node.js على جهاز الكمبيوتر لديك. MongoDB مثبت على جهاز الكمبيوتر لديك أو مُعدّ على حساب MongoDB Atlas السحابي. معرفة أساسية بإنشاء خوادم Node.js. Postman مثبت. إعداد مشروع Mongoose على Node.js. لإنشاء مشروع Node.js، انتقل إلى المجلد المطلوب وشغّل الأمر npm init -y. ثم ثبّت الحزم التالية: Express - لإنشاء خادم HTTP لـ Node.js. Mongoose - ODM لـ MongoDB في Node.js.

npm install mongoose --save

للتواصل مع Mongoose وMongoDB في Node.js للتواصل مع 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 اتصالاً باسم قاعدة بياناتك. تأكد من إدخال عنوان URI الصحيح الذي يتصل بتثبيت MongoDB المحلي لديك أو MongoDB Atlas cloud.mongodb://localhost:27017test.

وأخيرًا، قم بتصدير وظيفة 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.

تشغيل البرنامج على منفذ localhost:

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

هنا، نُنشئ دالة MySchema لتنفيذ دالة mongoose.Schema. تُنشئ هذه الدالة المخطط الذي يُشغّله Mongoose على MongoDB. لإنشاء المخطط، أضف الملفات إلى مستندك. في هذه الحالة، نضيف حقلين:
الاسم - ضمن الكود أعلاه، يُنشأ هذا الحقل كسلسلة نصية بحد أقصى خمسين حرفًا. تم ضبط "مطلوب" على "صحيح" للإشارة إلى ضرورة احتواء كل مستند على هذا الحقل.
حقل "إنشاء عند" — يُحدد وقت إنشاء المستند. يُعيّن افتراضيًا التاريخ الحالي كنوع تاريخ الإنشاء.

إضافة البيانات إلى قاعدة البيانات باستخدام مخطط 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 الخاصة بك:

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً