ادمج تطبيق Node.js الخاص بك مع قاعدة بيانات MongoDB باستخدام Mongoose.

قد تكون إدارة البيانات في قاعدة بيانات MongoDB صعبة ، خاصة عند التعامل مع نماذج البيانات المعقدة. MongoDB هي قاعدة بيانات بدون مخطط ، مما يعني أنه يمكن إضافة البيانات دون اتباع بنية معينة. تجعل هذه المرونة برنامج MongoDB مثاليًا لتخزين كميات كبيرة من البيانات ، ولكنه يجعل أيضًا إدارة البيانات أكثر صعوبة.

يوفر Mongoose حلاً قائمًا على المخطط يساعد على ضمان أن البيانات المحفوظة في MongoDB متسقة ومنسقة بشكل صحيح. باستخدام Mongoose ، يمكنك تحديد مخطط لنماذج البيانات الخاصة بك ، والذي يحدد بنية البيانات والقواعد الخاصة بكيفية تنسيق تلك البيانات. هنا سوف تستكشف كيفية استخدام النمس في تطبيق Express.

تهيئة بيئة التطوير الخاصة بك

قبل استخدام Mongoose ، يجب عليك تثبيته كعنصر تبعية في مشروعك.

يمكنك تثبيت Mongoose عن طريق تشغيل الأمر أدناه:

npm تثبيت النمس

بعد تثبيت Mongoose في مشروعك ، تحتاج إلى توصيل تطبيقك بـ MongoDB باستخدام Mongoose.

يتصل Mongoose بقاعدة بيانات MongoDB باستخدام ملف يتصل طريقة ، والتي تأخذ MongoDB URI كوسيطة.

هذا مثال:

instagram viewer
// index.js
مقدار ثابت النمس = يتطلب("النمس")

mongoose.connect ("mongodb: //127.0.0.1: 27017 / مثال", () =>
وحدة التحكم.سجل("تم الاتصال بقاعدة البيانات بنجاح")
);

يتصل مقطع التعليمات البرمجية أعلاه بمثيل MongoDB محلي ويسجل رسالة نجاح عندما يتصل تطبيقك بنجاح بـ MongoDB.

إنشاء نموذج النمس

نموذج Mongoose هو فئة قائمة على المخطط في Mongoose تسمح لك بالتفاعل مع مجموعة MongoDB.

يحدد مخطط Mongoose بنية المستندات التي يمكنك تخزينها في مجموعة MongoDB ويوفر واجهة لإنشاء المستندات وقراءتها وتحديثها وحذفها مجموعة.

عندما تقوم بتعريف نموذج Mongoose ، فإنك تحدد مخطط المستندات في تلك المجموعة ، بما في ذلك الخصائص وأنواعها وأي عمليات تحقق من الصحة.

في ما يلي مثال على نموذج النمس لملف مستخدم مجموعة:

مقدار ثابت النمس = يتطلب("النمس");

مقدار ثابت userSchema = النمس. مخطط({
اسم: {
يكتب: خيط,
مطلوب: [حقيقي, "مطلوب اسم"],
},
بريد إلكتروني: {
يكتب: خيط,
مطلوب: حقيقي,
},
عمر: {
يكتب: رقم,
التحقق من صحة: {
المدقق: وظيفة (قيمة) {
يعود قيمة> 0;
},
رسالة: () =>"الرجاء إدخال عمر صالح",
},
},
});

مقدار ثابت المستخدم = mongoose.model ("مستخدم"، userSchema) ؛

وحدة.exports = المستخدم ؛

تحدد كتلة التعليمات البرمجية أعلاه مخطط Mongoose بثلاث خصائص: اسم, بريد إلكتروني، و عمر. تحتوي كل خاصية على مجموعة محددة من القواعد التي يجب عليك اتباعها عند تعيين قيمة إلى حقلها المحدد. فيما يلي تفصيل للقواعد:

  • اسم: ال اسم الملكية هي خيط اكتب علامة مطلوب، مما يعني أنه يجب عليك تعيين سلسلة لهذا الحقل. إذا تركت الحقل فارغًا أو أدخلت نوع بيانات JavaScript، النمس يرمي خطأ.
  • بريد إلكتروني: ال بريد إلكتروني الملكية هي خيط اكتب علامة مطلوب. لا توجد قواعد أخرى للتحقق من الصحة ، ولكن في الممارسة العملية ، يجب عليك التحقق من صحة البريد الإلكتروني. يمكنك التحقق من صحة البريد الإلكتروني باستخدام تعبيرات regex أو مكتبات الطرف الثالث ، مثل class-validator.
  • عمر: ال عمر الملكية هي رقم اكتب بقاعدة تحقق مخصصة تتحقق مما إذا كانت القيمة المعينة للحقل أكبر من الصفر. إذا لم تجتز القيمة عملية التحقق ، فإن Mongoose يُلقي خطأً في الرسالة الرجاء إدخال عمر صالح. يمكنك ترك هذا الحقل فارغًا حيث لم يتم وضع علامة عليه كـ مطلوب.

بعد تحديد المخطط ، تقوم كتلة التعليمات البرمجية بإنشاء نموذج النمس المسمى مستخدم استخدام نموذج النمس () طريقة. تأخذ هذه الطريقة وسيطتين: اسم النموذج والمخطط المراد استخدامه للمستندات.

وأخيرا، فإن مستخدم يتم تصدير النموذج إلى أجزاء أخرى من التطبيق الخاص بك.

التفاعل مع MongoDB باستخدام النمس

من خلال اتصال تطبيقك بقاعدة بيانات MongoDB ونموذجك الذي تم إنشاؤه وإمكانية الوصول إليه من أجزاء أخرى من تطبيقك ، يمكنك التفاعل مع قاعدة البيانات الخاصة بك باستخدام الطرق التي يوفرها Mongoose.

في هذا البرنامج التعليمي ، سوف تؤدي عمليات CRUD على قاعدة بيانات MongoDB.

ملحوظة: تأكد من استيراد نموذج Mongoose الخاص بك إلى أي وحدة حيث ستقوم بتنفيذ عمليات CRUD.

على سبيل المثال:

// router.js

مقدار ثابت المستخدم = يتطلب("./userModel")

إنشاء وثيقة

الوثيقة هي مثيل للنموذج. هناك عدة طرق يمكنك من خلالها إنشاء مستند وحفظه في MongoDB باستخدام Mongoose.

أولاً ، يمكنك إنشاء مثيل لفئة النموذج الخاص بك ثم استدعاء يحفظ طريقة على ذلك.

على سبيل المثال:

// إنشاء مستخدم جديد
يترك المستخدم = جديد مستخدم({
اسم،
بريد إلكتروني،
عمر،
});

// حفظ المستخدم في قاعدة البيانات
مستخدم
.يحفظ()
.ثم(() => {
وحدة التحكم.سجل("تم إنشاء المستخدم بنجاح");
})
.يمسك((خطأ) => {
// معالجة الخطأ
});

تقوم كتلة التعليمات البرمجية أعلاه بإنشاء وحفظ ملف مستخدم وثيقة إلى قاعدة بيانات MongoDB الخاصة بك.

يمكنك أيضًا حفظ البيانات في قاعدة البيانات الخاصة بك باستخدام ملف يخلق طريقة. ال يخلق طريقة إنشاء مثيل النموذج الخاص بك واستدعاء يحفظ طريقة على ذلك. بالترتيب ، فهو يجمع بين عمليتي التقنية المذكورة سابقًا.

على سبيل المثال:

User.create ({الاسم ، البريد الإلكتروني ، العمر} ، (الخطأ ، البيانات) => {
لو (يخطئ) يرميجديدخطأ("خطأ في الخادم الداخلي");

وحدة التحكم.سجل(`تم إنشاء المستخدم بنجاح: $ {data}`);
});

كتلة التعليمات البرمجية أعلاه تنشئ ملفًا جديدًا مستخدم المستند بالخصائص التي تم تمريرها كوسيطة لملف يخلق طريقة.

بدلاً من ذلك ، يمكنك حفظ البيانات في قاعدة البيانات الخاصة بك باستخدام امتداد إدراج العديد طريقة. على الرغم من أن هذه الطريقة مثالية فقط لحفظ البيانات على دفعات.

على سبيل المثال:

User.insertMany (
[
{الاسم والبريد الإلكتروني والعمر} ،
{name_1 ، email_1 ، age_1} ،
],
(يخطئ ، نتيجة) => {
لو (يخطئ) {
// معالجة الخطأ
} آخر {
// إرسال النتائج
}
}
);

يقوم مقطع التعليمات البرمجية أعلاه بإنشاء مستندين جديدين في ملف مستخدم المجموعة باستخدام المصفوفة التي تم تمريرها كوسيطة إلى الملف إدراج العديد طريقة.

قراءة وثيقة

يمكنك الوصول إلى جميع المستندات المحفوظة في قاعدة بيانات MongoDB باستخدام Mongoose’s يجد طريقة.

على سبيل المثال:

User.find ({})
.ثم((بيانات) => {
وحدة التحكم.تسجيل البيانات)؛
})
.يمسك((يخطئ) => {
// معالجة الخطأ
});

سيعيد مقطع التعليمات البرمجية أعلاه جميع المستندات الموجودة في ملف مستخدم مجموعة.

يمكنك أيضًا العثور على جميع المستندات التي تطابق استعلامًا معينًا عن طريق تمرير استعلام إلى طريقة البحث.

على سبيل المثال:

// البحث عن جميع المستندات التي لا يقل عمرها عن 18 عامًا
User.find ({ عمر: { gte دولار: 18 } })
.ثم((بيانات) =>وحدة التحكم.تسجيل البيانات))
.يمسك((خطأ) =>وحدة التحكم.log (خطأ)) ؛

سيعيد مقطع التعليمات البرمجية أعلاه جميع المستندات ذات القيمة العمرية الأكبر من 18 في ملف مستخدم مجموعة.

بدلاً من ذلك ، يمكنك قراءة السجلات الفردية باستخدام ملف findById الطريقة وتمرير معرف المستند كوسيطة أو باستخدام findOne الطريقة وتمرير عامل التصفية كوسيطة.

على سبيل المثال:

//findById
User.findById (معرف ، (خطأ ، نتيجة) => {
لو (نتيجة) وحدة التحكم.log (نتيجة) ؛
لو (خطأ) وحدة التحكم. Error (خطأ)
});

//findOne
User.findOne ({ بريد إلكتروني: "[email protected]" }).ثم((مستخدم) => {
لو (!مستخدم) {
// معالجة الخطأ
}
//أرسل جوابا
});

في كتلة التعليمات البرمجية أعلاه ، فإن ملف findById تقوم الطريقة بإرجاع المستند بالمعرف المطابق. ال findOne طريقة إرجاع المستند الأول الذي يحتوي على البريد الإلكتروني [email protected].

تحديث وثيقة

يمكنك تحديث مستند على MongoDB باستخدام Mongoose باستخدام امتداد findByIdAandUpdate طريقة. تأخذ هذه الطريقة معرفًا وكائنًا بالتفاصيل المحدثة.

على سبيل المثال:

User.findByIdAndUpdate (id، req.body، (err، doc) => {
لو (وثيقة) {
//أرسل جوابا
}
لو (يخطئ) {
// معالجة الخطأ
}
});

تقوم كتلة التعليمات البرمجية أعلاه بتحديث المستند الذي يحتوي على معرف يطابق المعرف المقدم مع كائن التحديث المقدم (مطلوب شخص).

حذف وثيقة

يمكنك حذف مستند على MongoDB باستخدام Mongoose باستخدام امتداد findByIdAndDelete طريقة. تأخذ هذه الطريقة معرّفًا كوسيطة وتحذف المستند بالمعرّف المقابل.

على سبيل المثال:

User.findByIdAndDelete (المعرف ، (خطأ ، نتيجة) => {
لو (نتيجة) {
// معالجة النتيجة
}
لو (خطأ) {
// معالجة الخطأ
}
});

يحذف مقطع التعليمات البرمجية أعلاه مستندًا بالمعرف المحدد من قاعدة بيانات MongoDB.

استخدام النمس في تطبيقاتك السريعة

قدمت هذه المقالة نظرة عامة على كيفية استخدام Mongoose في تطبيقك السريع. تغطي كيفية إنشاء اتصال بـ MongoDB ، وهيكل البيانات المحفوظة في قاعدة بيانات MongoDB والتحقق منها ، وتنفيذ عمليات CRUD البسيطة.

باستخدام Mongoose في تطبيقات Express ، يمكنك تبسيط وتبسيط التفاعلات بين تطبيقك وقاعدة بيانات MongoDB.