في هذا التمرين، سنستمر في التمرين السابق حيث قمنا
بتطوير التفاعل بين تطبيق العقدة وخادم MongoDB.
في هذا التمرين، سأقوم بتغليف عدد قليل من
عمليات قاعدة البيانات في وحدة عقدة خاصة بها،
وحدة عقدة قائمة على الملف،
ومن ثم الاستفادة منها داخل تطبيق العقدة الخاص بي من أجل التفاعل مع الخادم.
وفي الوقت نفسه، سنقوم بإجراء العديد من العمليات
على الخادم لإثبات أننا سوف تكون
قادرة على التفاعل مع الخادم باستخدام تطبيق العقدة لدينا وبرنامج تشغيل مونغودب العقدة.
للبدء، دعونا نذهب إلى مشروعنا،
ومن ثم إنشاء ملف جديد باسم operations.js.
سيقوم هذا الملف بتغليف جميع عمليات قاعدة البيانات هذه،
والعمليات الأربع التي سأقوم بتنفيذها إدراج
، والعثور على وإزالة وتحديث مستند في قاعدة البيانات الخاصة بي.
الآن، سيتم تنظيم هذا كوحدة عقدة قائمة على الملف،
والتي بعد ذلك سأستخدمها في تطبيق العقدة الخاص بي للوصول إلى الخادم.
لذلك، للبدء، اسمحوا
لي أولا تتطلب التأكيد،
في هذه الوحدة العقدة،
وبما أن هذا يحدث أن تكون وحدة عقدة،
سنقوم بتصدير عدة طرق من وحدة العقدة.
الطريقة الأولى ستكون إدراج مستند واضح كما تتوقع،
وهذا سيستغرق أربع معلمات DB، و
MongoDB، اتصال قاعدة البيانات داخل تطبيق العقدة الخاص بي،
والتي سأحصل عليها داخل تطبيق العقدة.
ثم الثاني هو المستند الذي أريد إدراجه.
المعلمة الثالثة هي المجموعة التي أريد إدراج المستند فيها.
آخر واحد هو وظيفة رد الاتصال،
والتي سيتم استدعاؤها مرة أخرى بمجرد اكتمال هذه العملية.
ثم دعونا نغلق الوظيفة هنا،
وهذا أساسا يغلف طريقة إدراج المستند هنا.
لذا، هذه هي وظيفة يتم تصديرها بواسطة وحدة العقدة هذه هنا.
الآن، أنا ذاهب أيضا لدمج بعض الطرق أكثر هنا.
الثانية سيتم العثور على وثائق.
ليس فقط وثائق واحدة ولكن عدة وثائق.
هذا وأود أن البحث في المجموعة والعثور على جميع الوثائق الموجودة في المجموعة.
لذلك، هذا هو السبب في أنني فقط أخذ قاعدة البيانات
والمجموعة كمعلمتين جنبا إلى جنب مع رد الاتصال.
الوظيفة الثالثة التي سأقوم بتنفيذ تصدير من هنا هي إزالة المستند.
هذا يدعم عملية الحذف،
وبالتالي فإن اسم المستند سوف يأخذ قاعدة البيانات والمستند
والمجموعة ورد الاتصال كمعلمات أربعة،
وسنقوم باستدعاء رد الاتصال عند اكتمال العملية.
الأخير بالطبع هو تحديث الوثيقة.
الآن بالطبع، ليس عليك بالضرورة أن تفعل ذلك بهذه الطريقة.
شعرت فقط أن هذا سيكون طريقة أخرى لتوضيح كيف يمكنك
تغليف هذه الوظائف في وحدة العقدة الخاصة بها.
هذا هو مجرد إعادة تنظيم التعليمات البرمجية بطريقة أكثر سهولة في الاستخدام.
لذلك، بالنسبة للصادرات،
بالنسبة لمستند التحديث، فإنه يأخذ DB،
بعض الطرق لتحديد المستند كمعلمة ثانية.
المعلمة الثالثة هي التحديث،
والمعلمة الرابعة هي المجموعة التي
يوجد فيها هذا المستند، واستدعاء الاتصال.
لذلك، أربع وظائف ليتم تصديرها بواسطة ملف operations.js.
الآن، ضمن هذه الوظائف،
دعونا ننفذ واحدا تلو الآخر.
في مستند الإدراج،
أول شيء سأقوم به هو أن أقول مجموعة
const وسيقول مجموعة DB،
والمعلمة هي المجموعة.
لذا، سنبحث عن المجموعة هناك.
الآن، هذا يجب أن يتم في جميع الطرق الأربع.
لذلك، أنا ذاهب للذهاب ولصق هذا الرمز في جميع الطرق الأربعة هنا،
لأن هذه هي وظيفة التي أحتاجها في كل منهم.
لذلك، بمجرد أن أحصل على عقد من المجموعة،
ثم كما تتذكر من التمرين السابق،
يمكنني إجراء عمليات على المجموعة.
لذلك، سأقول جمع، إدراج،
وهذا يأخذ كمعلمة الأولى المستند المراد إدراجه،
والمعلمة الثانية هي رد الاتصال مع الخطأ وهذه النتيجة.
لذا، الآن عندما
يتم إدراج هذا المستند عن طريق استدعاء طريقة الإدراج في مجموعة قاعدة البيانات،
تسمح لي طريقة الإدراج بتذكيرك،
مدعوم من قبل برنامج تشغيل MongoDB.
إذن، هذه هي الطريقة التي نستخدمها هنا،
أو تلك هي الوظيفة التي نستخدمها هنا.
الآن، أول شيء أنا ذاهب للتحقق من هذا، خطأ assertequal، لاغية.
لذلك، أريد أن أتأكد من أنه ليس لدي خطأ.
لذلك أريد التأكد من أن الخطأ فارغ.
إذا لم يكن فارغًا،
فسيقوم هذا بطباعة المعلومات ثم قم بإنهاء التطبيق.
في هذه اللحظة، أشعر أن هذا أمر جيد للتعامل معه في وقت لاحق،
سنرى كيف يمكننا الحصول على طريقة عالمية للتعامل مع جميع الأخطاء عندما
ننفذ في الدرس التالي طريقة أخرى للوصول إلى قاعدة بيانات MongoDB.
الآن، بعد أن أفعل هذا،
سأقوم بتنفيذ،
سأقوم ببساطة بتسجيل هذه المعلومات.
لذلك سأقول، سجل وحدة التحكم وأدخله.
لذلك، سيتم طباعة هذه المعلومات إلى الشاشة هنا، إدراجها.
الآن مرة أخرى، تذكر الفواصل المنقوطة وكل ما هو
مهم لا ننسى لهم عندما كنت تكتب في التعليمات البرمجية الخاصة بك.
لذلك، سأقول النتيجة المدرجة.
كائن النتيجة هذا الذي يتم إرجاعه،
سيكون عليه خاصية تسمى خاصية النتيجة،
وستحتوي هذه الخاصية على قيمة.
خاصية النتيجة هذه هي أيضًا كائن JavaScript،
وسيحتوي هذا على خاصية n تخبرنا بعدد المستندات التي تم إدراجها.
إذن هذه هي المعلومات التي سأطبعها هنا،
ثم سنذهب إلى السطر التالي
ونقول «وثائق في المجموعة».
الآن، هذه مجرد طريقة لإعلام المستخدم بأن هذه العملية حدثت بشكل صحيح،
ومن ثم سيمررون تلك النتيجة مرة أخرى إلى وظيفة الاتصال الخاصة بنا.
لذلك، سنقوم باستدعاء رد الاتصال ومن ثم ستكون النتيجة المعلمة إلى رد الاتصال.
لذلك، عندما نقوم بتنفيذ استخدام هذه الوظيفة في ملف index.js الخاص بنا،
سنقوم بتوفير رد الاتصال هناك والتي سوف
تتلقى النتيجة كمعلمة واردة.
لذلك، هذا هو ل «إنزيرتدوكومنت».
الآن، بالنسبة لـ «FindDocument»،
ما سأفعله هو أن أقول،
«col.find» وسأجد جميع المستندات.
لذلك، هذا هو السبب في أنني سوف أعطي كائن جافا سكريبت فارغ هنا،
والتي سوف تتطابق مع جميع الوثائق في المجموعة وبعد ذلك سأقول،
«ToArray» وهذا سوف يستغرق كمعلمة وظيفة رد الاتصال،
وداخل وظيفة رد الاتصال هذه، بالطبع،
سوف أؤكد أن هذا ليس خاليًا،
وبعد ذلك سنقول، «مستندات رد الاتصال».
سنقوم ببساطة بتمرير المستندات التي تم استردادها مرة أخرى إلى وظيفة الاتصال.
الآن، ل «ريموفدوكومنت»، أنا ذاهب إلى القول، «جمع ديليتيوني».
لذلك، سأحاول العثور على المستند الأول الذي
يطابق ما حددناه ثم حذفه.
ثم سيستغرق ذلك، مرة أخرى،
وظيفة رد اتصال كمعلمة ثانية،
وداخل وظيفة رد الاتصال هذه،
فإن أول شيء أتحقق منه هو التأكد من أن الخطأ ليس خاليًا.
ثم بعد ذلك، سوف نقول،
«سجل وحدة التحكم إزالة وثيقة فاصلة المستند».
استخدمنا الفاصلة هنا لأن هذا هو كائن جافا سكريبت لذلك،
إذا قمت بتحديد سجل وحدة التحكم مثل هذا،
سيتم طباعة المستند ثم سنقوم بتمرير
هذه النتيجة مرة أخرى من خلال وظيفة رد الاتصال.
ثم أخيرا، للتحديث سنقوم col.UpdateOne.
هذه طريقة يدعمها برنامج تشغيل MongoDB.
لذلك، سأقول، «مستند Update.one
"، والمعلمة الثانية هي المكان الذي
سنمر فيه في الحقول التي تحتاج إلى تحديث.
والطريقة التي يتم بها ذلك،
سنقول، «الدولار تعيين تحديث القولون.»
لذلك، سوف يستغرق هذا معلومات التحديث التي
أقوم بإرسالها ثم تمريرها إلى update.one.
الأول هو المستند الذي يحتاج إلى تحديث.
والثاني هو حقول الوثيقة التي تحتاج إلى تحديث هنا.
والمعلمة الثالثة خالية،
وهذه المعلمة الأخيرة هي وظيفة رد اتصال،
والتي من الواضح أنها ستعطينا نتيجة العملية.
لذلك، أول شيء أنا ذاهب للتحقق للتأكد من أن الخطأ ليست فارغة.
ثم، سأفعل «سجل وحدة التحكم تحديث المستند مع.»
الآن مرة أخرى، سجلات وحدة التحكم هي بحتة بالنسبة لنا
للتأكد من أن التعليمات البرمجية تفعل ما تقوم به.
هذا لا يساعد بأي شكل من الأشكال.
هذا فقط لمعلوماتنا الخاصة
في خادم الإنتاج،
لن يكون لديك سجلات وحدة التحكم هذه، ربما.
يمكنك تعطيلهم. لذا، هذا هو.
لذلك يتم دعم أربع طرق في هذه الوحدة النمطية للعقدة المستندة إلى ملف معين،
والعثور عليها وإزالتها وتحديثها.
لذا، الآن بعد أن قمنا بتنفيذ وحدة العقدة المستندة إلى الملف،
دعنا نذهب إلى ملف index.js،
ثم للاستفادة من وحدة العقدة المستندة إلى الملف،
أحتاج إلى طلب هذا هنا.
لذلك، سأقول، «كونست دوبر تتطلب.»
نظرًا لأن هذا هو وحدة عقدة قائمة على الملف، تحصل على المسار الكامل لوحدة العقدة
، والذي يحدث في هذه الحالة. /العمليات
لأنه في نفس المجلد مثل ملف index.js الخاص بي.
الآن، بمجرد الانتهاء من ذلك،
ثم هنا، هذه الوظيفة،
وهذا الرمز الذي كنا نفعله للوصول إلى قاعدة البيانات الآن إدراج،
ونحن سوف تستخدم dboper التي قمنا للتو تنفيذها للوصول إلى قاعدة البيانات تلك.
لذلك، سوف نقول، «دبوبر إدراج وثيقة،
" وهذا «إدراج وثيقة» يأخذ ديسيبل كمعلمة الأولى.
ديسيبل هنا، هو هذا ديسيبل الذي جاء عندما ندعو مونغوكلينت الاتصال.
بحيث سيتم تمرير ديسيبل في، وبهذه الطريقة،
وحدة عقدة العمليات بلدي يعرف مكان الوصول إلى قاعدة البيانات.
ثم المعلمة الثانية هي،
لذلك إذا نظرتم إلى «إدراج مستند» سترى
أن المعلمة الثانية هي المستند المراد إدراجه.
لذلك، سأقول، «الاسم. «
سأقوم فقط بإنشاء كائن JSON أو كائن JavaScript هنا،
والذي سيتم تعيينه تلقائيًا في كائن مجاور عند إدراجه.
والمعلمة الثالثة، كما ترى،
«جمع وثيقة ديسيبل واستدعاء».
وبالتالي فإن المعلمة الثالثة هي المجموعة والمجموعة
هي مجموعة الأطباق والأخيرة هي رد الاتصال.
المكالمة مرة أخرى كما تذكر يتلقى النتيجة.
إذا نظرت إلى الوراء في الطفل تنفيذ وثيقة إدراج،
تلقى رد الاتصال النتيجة كمعلمة.
حتى داخل هذا الاتصال سوف نتعامل مع قيمة النتيجة هذه هنا.
لذلك، عندما تأتي قيمة النتيجة في سنقوم بعمل console.log.
سنقول إدراج المستند
الخط المائل العكسي N وسنقول نتيجة OPS.
يخبرك مكتب خدمات المشاريع عدد عمليات الإدراج التي تم تنفيذها.
لذلك هذا هو كائن آخر سيكون على
كائن جافا سكريبت النتيجة التي يتم تمريرها مرة أخرى
كمعلمة وهكذا أنا مجرد الذهاب لطباعة هذه القيمة.
لذا هذا سيعطينا بعض المعلومات حول ما حدث
الآن بمجرد اكتمال هذا،
داخل وظيفة رد الاتصال هذه، سأقوم باستدعاء عملية قاعدة البيانات التالية.
لذا سأقول (دوبر) ثم أعثر على الوثائق
ثم سأقول dbduses والمعلمة الثالثة هي المستندات،
وهي وظيفة رد الاتصال.
عندما أتلقى المستندات سأقوم بعمل
console.log قائلا المستندات التي تم العثور عليها،
وسنقوم ببساطة بقفل المستندات على الشاشة.
لذلك، سيؤدي هذا إلى طباعة المستندات التي تم العثور عليها.
لاحظ أن هذه المكالمة موجودة داخل
وظيفة رد الاتصال التي يتم تطبيقها لاستدعاء الدالة السابقة،
بحيث أن هذا شيء أريدك أن تلاحظه على وجه التحديد.
الآن، مرة أخرى داخل هذه الوظيفة استدعاء أنها تحتاج إلى القيام بذلك بهذه الطريقة لأنه حتى
يتم استدعاء هذا الاتصال لا يمكننا القيام بالعملية التالية.
لذلك، في هذه العملية التالية سأقوم بتحديث المستند الذي قمت بإدراجه للتو.
لذلك سأقول تحديث المستند وسأقول تحديث DB Document،
ثم المعلمة التالية هي المستند
ولا أحتاج إلى تحديد المستند بأكمله يمكنني تحديد حقل واحد فقط
ثم ستجد المستند الذي يطابق هذا الحقل المعين.
ما سأقوم به هو المعلمة التالية هي التحديث الذي يجب توفيره.
لذا، فإن التحديث هو الحقل الذي أريد تحديثه،
لذلك سأقوم بتحديث
حقل الوصف بقول اختبار محدث،
ثم الرابع هو المجموعة التي هي أطباق،
والأخير هو وظيفة رد الاتصال التي تحصل على
المستندات كقيمة الإرجاع أو
بالأحرى نتيجة من عملية التحديث التي قمنا بها للتو.
ثم داخل وظيفة رد الاتصال هذه،
سأقوم مرة أخرى بعمل console.log قائلا
تحديث المستند الخط المائل العكسي N سيتم تمرير المستند المحدث
مرة أخرى في result.result على
هذه الخاصية من كائن النتيجة التي يتم تمريرها تتبع.
لاحظ مرة أخرى كيف يتم الحصول على المكالمات المتداخلة
داخل وظائف رد الاتصال هنا.
أريدك أن تلاحظ هذا الهيكل من التعليمات البرمجية
على وجه التحديد لأن هذا هو ما سأعود إليه في التمرين التالي.
الآن بعد أن أفعل ذلك،
سأذهب للعثور على الوثائق،
لذلك اسمحوا لي فقط نسخ ذلك وبعد ذلك سوف تستخدم نفس الرمز هنا.
لذلك سأقول، العثور على الوثائق.
داخل هنا أنا مرة أخرى ذاهب إلى القول، وجدت وثيقة محدثة.
ثم أخيرا عندما أنتهي من هذا،
وسوف أدعو ببساطة ديسيبل مجموعة قطرة.
لذلك سأقوم بحذف مجموعة الأطباق هذه حتى أقوم
بتنظيف قاعدة البيانات الخاصة بي حتى لا يكون لدي
أي شيء أكثر لأن التمرين التالي أريد تنظيف
قاعدة البيانات ثم ابدأ بقاعدة بيانات أنظف.
لذلك، أنا ذاهب لتنظيف
مجموعة الأطباق ومن ثم هذا من شأنه أن يؤدي إلى رد الاتصال.
حتى داخل هنا أنا ذاهب الى القيام console.log قائلا،
انخفض جمع، وبعد ذلك سوف مجرد طباعة النتيجة التي جاءت في.
ثم أخيرًا، أغلق قاعدة البيانات.
لاحظ أن بنية الشفرة،
مستند إدراج DB وداخل وظيفة رد الاتصال أنا ذاهب لاستدعاء
الوظيفة التالية وداخل
رد الاتصال قبالة أنني ذاهب لاستدعاء
الوظيفة التالية وداخل وظيفة رد الاتصال التالية وهلم جرا.
لذلك، ترى مجموعة متداخلة من الاستدعاءات هنا
ومجموعة متداخلة من الاستدعاءات هنا.
هذا شيء أريدك أن تنتبه إليه
دعونا حفظ التغييرات ونذهب وننظر إلى هذا الإصدار من تطبيقنا.
العودة إلى المحطة،
اسمحوا لي تنفيذ التطبيق.
لذلك اسمحوا لي أن اكتب بداية الآلية الوقائية الوطنية وسنرى تلك النتيجة.
الآن، من هذه النتيجة يمكنك أن ترى أن يتم
إدراج المستند في المجموعة وهذا هو المستند الذي تم العثور عليه.
في الخطوة الثانية،
نعثر على المستند حتى عندما نسمي مستند البحث عن DB،
لذلك هذا هو المستند الذي يتم استرداده من مجموعتي.
ثم أطلب منه تحديث المستند
بهذا ومن ثم ستلاحظ أنه يقول مستند محدث ثم
هنا يطبع النتيجة أو OPS وتقول N يساوي
رقم واحد تم تعديله كواحد وكان على ما يرام.
ثم يطبع المستند المحدث،
نجد المستند المحدث هنا وهذا ما يتم طباعته هنا،
ونلاحظ على وجه الخصوص أن الوصف قد تم تحديثه.
ثم أخيرا، أسقطت المجموعة.
لذلك نرى كيف يعمل هذا التطبيق وقادرة على الاستفادة من
وحدة العقدة التي قمنا بتنفيذها ومن ثم تنفيذ عمليات قاعدة البيانات المختلفة.
مع هذا نكمل هذا التمرين.
في هذا التمرين، لقد أظهرت لك كيف ستتفاعل مع
خادم MongoDB الخاص بك من تطبيق العقدة الخاص بك.
لقد قمنا بتنفيذ وحدة العقدة الخاصة بنا هنا ثم استخدمها
داخل تطبيق العقدة لدينا عن طريق تغليف
بعض عمليات قاعدة البيانات في وحدة العقدة هذه.
هذا هو الوقت المناسب بالنسبة لك للقيام جيت الالتزام مع
عقدة الرسالة MongoDB مثال الجزء الثاني.