كما فهمنا من المحاضرة السابقة في هذا الدرس، فإن
هدفنا في هذا الدرس هو
دمج خادم REST API الذي قمنا بتطويره بالفعل،
مع الوصول إلى قاعدة بيانات MongoDB.
لذا، سنبدأ بخادم REST API
الذي قمنا ببنائه في الدرس الأول في هذه الوحدة،
ثم بعد أن تعلمنا كيفية التفاعل من
تطبيق العقدة إلى خادم MongoDB باستخدام Mongoose،
سنقوم بتطوير خادم REST API الخاص بنا بشكل أكبر لدمج بين طلب العميل الوارد إلى الخادم، على
طول الطريق إلى عملية قاعدة البيانات المقابلة التي يتعين تنفيذها،
ثم إنشاء وإرسال الرد إلى هذا العميل من موقع الخادم الخاص بنا.
للبدء بالطبع، أولاً،
انتقل إلى مجلد خادم الارتباك الذي أنشأه بالفعل في
التمرين الأول لهذه الوحدة في درس REST API
، ثم في مجلد الارتباك،
قمنا بالفعل ببناء خادم REST API.
الآن، ما كنا نفعله هو استعارة
النماذج التي قمنا بتطويرها في التمرين السابق،
ملف dishes.js الذي قمنا بتطويره في التمرين السابق،
نسخه إلى مشروع خادم الارتباك،
وكذلك تثبيت Bluebird Mongoose،
ووحدة أخرى تسمى النمس العملة، لمشروعنا.
لذلك، والذهاب إلى مجلد عقدة جس،
نذهب أولا إلى مجلد عقدة النمس،
ونحن نرى أنه في المجلد الفرعي نماذج من مجلد النمس عقدة،
لدينا ملف dishes.js.
أنا فقط ذاهب لنسخ مجلد النماذج،
ومن ثم انتقل إلى مجلد خادم الارتباك،
ومن ثم ببساطة اختراق مجلد النماذج هناك.
لذلك، بمجرد القيام بذلك،
يتم
دمج ملف dishes.js الذي يحتوي على المخطط ونموذج مستند الأطباق، في خادم REST API الخاص بنا.
بالطبع، من أجل الاستفادة من ذلك،
نحن بحاجة إلى تثبيت وحدة عقدة النمس،
ووحدة عقدة جديدة تسمى عملة النمس في مشروعنا.
لذا، انتقل إلى المحطة الطرفية في مشروع خادم الارتباك،
تأكد من أن المحطة الطرفية أو نافذة الأوامر موجودة
في مشروع خادم الارتباك حيث تقوم بتطوير واجهة برمجة تطبيقات REST مسبقًا،
وفي هذا المشروع، دعنا نثبّه.
لذلك، سنقوم npm تثبيت Mongoose،
وبعد ذلك، وحدة عقدة جديدة تسمى عملة Mongoose.
وحدة عقدة العملة Mongoose،
ونرى في نوع مخطط آخر إلى تطبيق Mongoose لدينا،
وبالتالي فإن Mongoose نفسها،
بالتأكيد المدمج في أنواع المخطط.
لقد رأينا استخدام الرقم،
السلسلة والمنطقية، والصفيف.
الآن، تضيف عملة النمس دعمًا للعملة.
الآن، لماذا نحتاج إلى دعم هذه العملة؟
بحيث تضيف وحدة العملة Mongoose نوعًا جديدًا يسمى نوع العملة،
مما يمكننا من تخزين قيمة العملة.
منذ طبقنا سوف تحتوي على سعر،
وهذا هو السبب في أنني ذاهب إلى استخدام وحدة العملة النمس هنا.
الآن، وممارسة هنا،
وسوف نوضح استخدام وحدة العملة النمس،
يمكنك قراءة المزيد من التفاصيل حول وحدة عقدة العملة النمس أيضا،
في وثائق أن الرابط الذي يتم توفيره في الموارد الإضافية.
لذا، الآن بعد أن قمنا بتثبيت وحدات العقدة هذه،
عملة Mongoose و Mongoose،
دعنا نذهب إلى تطبيقنا وإعداده للتواصل مع خادم MongoDB.
الآن، تأكد من أن خادم MongoDB الخاص بك قيد التشغيل.
لذلك، هنا، ترى أن
خادم MongoDB الخاص بي يعمل في علامة تبويب محطة أخرى على جهاز الكمبيوتر الخاص بي.
إذا كنت تقوم بتشغيله على جهاز يعمل بنظام التشغيل Windows،
فتأكد من أنه قيد التشغيل في أمر آخر نافذة من جهاز الكمبيوتر الذي يعمل بنظام التشغيل Windows.
الذهاب إلى تطبيقنا في المحرر،
سنبدأ أولا مع ملف app.js.
الآن في ملف app.js،
وهذا هو المكان الذي بنيت لدينا التطبيق السريع في وقت سابق.
ولكن الآن، لا يتم توصيل هذا النفي الممتصة الإضافية بخادم MongoDB الخلفي.
نحن في طريقنا إلى الاستفادة من وحدة النمس،
من أجل إنشاء اتصال مع الخادم.
لذلك، الذهاب هنا،
وأنا ذاهب لإضافة في تتطلب وحدة النمس هنا.
لذا، سنقول، «كونست النمس يتطلب النمس».
وبعد ذلك أيضًا، نظرًا لأننا قمنا بنسخ مجلد النماذج،
الذي يحتوي على ملف الأطباق،
والذي يعلن مخطط الأطباق والنموذج.
لذلك، اسمحوا لي أن استيراد الأطباق.
لذلك، سنقول، «مطلوب. قطع نماذج الأطباق.»
لذلك، بمجرد الانتهاء من ذلك، الآن بالطبع،
نحن بحاجة إلى إنشاء اتصال مع الخادم.
لذا، قم بإعداد
عنوان URL mongodb//localhost7017/الارتباك،
تمامًا كما فعلنا مع ممارسة Mongoose،
وبعد ذلك سنقول،
«Const connect، عنوان URL للاتصال Mongo».
لذلك، هذا هو بالضبط نفس الرمز الذي استخدمناه في التمرين السابق.
ثم، دعونا إنشاء الاتصال.
لذلك، سوف نقول، «الاتصال» وبعد ذلك سنقول،
«دب تفعل ذلك سجل وحدة التحكم.»
يقول، «متصل بشكل صحيح بالخادم.»
وسنتعامل أيضًا مع الخطأ هنا.
سنقوم ببساطة بعمل سجل وحدة التحكم للخطأ هنا، هذا كل شيء.
سيؤدي ذلك إلى إنشاء الاتصال بالخادم من ملف app.js الخاص بنا.
لذلك، بمجرد أن أنشأنا الاتصال بالخادم،
ثم، دعونا فتح ملف dishes.js من نماذجنا.
الآن، في ملف dishes.js،
للاستفادة من
وحدة العقدة التي قمنا بتثبيتها للتو.
لذلك، سوف نقول، «تتطلب عملة النمس،» ويقول،
«تحميل النوع والنمس.»
لذا، ما سيفعله هذا هو تحميل نوع العملة الجديد هذا إلى Mongoose.
بعد ذلك، يمكننا أن نقول const،
العملة النمس أنواع العملة.
هذا كل شيء لذلك، هذا النوع الجديد،
يتم إضافة نوع العملة إلى Mongoose والتي ستضيف في نوع جديد يسمى
العملة ومن ثم سأعلن
هذه العملة الثابتة كعملة أنواع Mongoose.
حتى أتمكن من الاستفادة من هذا في تحديد المخطط في طلبي.
الآن، في هذه الحالة،
سيبقى المخطط المشترك كما كان من قبل ولكن
مخطط الطبق كما تتذكر من ملف db.json.
عندما تنظر إلى بنية وثيقة طبق،
ترى أن وثيقة الطبق تحتوي على اسم وصورة كما ترون هنا هي
سلسلة، فئة، تسمية،
سعر، وهو نوع سلسلة هنا.
لكننا سنعلن هذا كنوع عملة،
وهي ميزة كما تتوقع هي متغير منطقي،
ووصف عبارة عن سلسلة ثم تعليقات
ليست سوى مجموعة من نوع التعليقات.
الآن، ما سنفعله الآن هو توسيع مخطط الطبق
لدعم كل هذه الخصائص المختلفة أو الحقول المختلفة في مستند json الخاص بي.
لذلك لدينا الاسم بالفعل.
لذلك لدينا بالفعل الوصف في المكان.
لذلك نحن بحاجة إلى إضافة في القليلة القادمة هناك لدينا بالفعل التعليقات،
ومجموعة من التعليقات من نوع مخطط التعليق هناك.
لذلك سوف نضيف في القليلة القادمة.
لذا فإن النوع التالي الذي سنضيفه هو نوع الصورة،
والذي سيكون
من سلسلة النوع
وسنقول صحيح مطلوب.
لذلك هذا يضيف نوع الصورة.
التالي الذي سأضيفه هو الفئة،
وهو أيضًا نوع السلسلة.
التالي هو التسمية،
وهو أيضا نوع السلسلة هذا.
بما أن كل هذه من نفس النوع والمطلوب،
فأنا أقوم بنسخها هنا فقط.
ثم بالنسبة للتسمية،
أود أن أقول أن هذا غير مطلوب ولكن
بدلا من ذلك يمكنني أيضا تحديد قيمة افتراضية إذا أردت.
حتى أتمكن من تحديد قيمة افتراضية من هذا القبيل.
القيمة الافتراضية هي سلسلة فارغة.
لذلك، إذا لم أكن تحديد المطلوبة يمكنني ببساطة تحديد قيمة افتراضية هنا.
الآن، بالإضافة إلى ذلك، الحقل التالي الذي سأقوم بتقديمه هو حقل السعر.
حقل السعر سأعلن النوع كعملة.
أذكر أننا قد أعلنا نوع العملة في وقت سابق
هنا من خلال المطالبة أولا
وحدة العملة النمس ومن ثم الإعلان عن نوع العملة.
لذا، هذه هي الطريقة التي ستستخدم بها نوع العملة في طلبنا.
لذلك سنقول نوع سعر العملة
والمطلوب هو صحيح وبعد ذلك يمكنني أيضا تحديد الحد الأدنى للقيمة التي من شأنها أن تكون صفر.
ثم الحقل التالي هو
الحقل المميز الذي سيكون من النوع Boolean
، وستكون القيمة الافتراضية خاطئة.
لذلك، إذا كان المستند الخاص بي مفقودًا،
فسيتم إضافة القيمة الافتراضية إلى المستند هنا.
لذلك لاحظ أنني قمت الآن بتوسيع
مخطط الطبق بإضافة في نوع الصورة، والفئة،
والتسمية، والسعر وميزة لتتناسب مع
بنية مثال مستند الطبق الذي أظهرته لك في وقت سابق.
حتى الآن، مخطط أطباقي جاهز للاستخدام.
لذلك، دعونا نبدأ الآن العمل على جهاز التوجيه الخاص بي.
إذن أين جهاز التوجيه؟
تذكر أن جهاز التوجيه الذي يدعم نقاط النهاية REST API لأطباق الشرطة المائلة،
ونقطة النهاية REST API والأطباق
المائلة، ونقطة نهاية معرف طبق مائل في جهاز التوجيه الطبق.
لذلك، سوف نذهب إلى طبق router.jsfile وبعد ذلك سنقوم بتوسيع ملف router.js الطبق.
لذلك، في جهاز التوجيه الطبق جنبا إلى جنب مع Express و bodyParser،
وأنا ذاهب لتشمل الآن Mongoose.
لذلك سنقول تتطلب Mongoose
وبعد ذلك سوف تتطلب نموذج الأطباق.
أين هو نموذج الأطباق؟
هو في. /نماذج/أطباق.
لذلك هو في هناك.
لذلك لاحظ أننا في مجلد جهاز التوجيه،
لذلك تحتاج إلى الصعود مستوى واحد ثم انتقل إلى
مجلد النموذج ثم ملف dishes.js هناك حق.
لذلك هذا هو ما نستورده هنا.
حتى الآن، يمكنني تحديث جهاز توجيه الطبق الخاص بي لتكون قادرة على التفاعل
مع خادم MongoDB باستخدام
Mongoose ولقد قمنا بالفعل باستيراد نموذج الأطباق في جهاز التوجيه الخاص بي.
لذلك، لقد حان الوقت بالنسبة لي للذهاب وتحديث جميع الطرق هنا.
حتى بالنسبة لجهاز التوجيه طبق،
شرطة مائلة مما يعني أن أطباق مائلة نقطة النهاية.
سأقوم بإزالة كل هذا من هنا، بدلاً من ذلك،
سأقوم بالإعلان صراحة عن جميع نقاط النهاية المختلفة.
للحصول على وظيفة وضع وحذف سأتعامل مع كل واحد منهم بشكل مستقل.
حتى في طريقة الحصول على،
وأنا ذاهب لقطع ذلك ومن ثم في طريقة الحصول على، ماذا أحتاج إلى القيام به؟
أذكر أننا قد حددت طريقة من النمس الذي يسمح لنا للعثور على جميع الأطباق.
لذلك عندما تقوم بعملية الحصول على نقطة نهاية الأطباق المائلة،
فأنت تتوقع إرجاع جميع الأطباق
إلى العميل استجابة لطلب الحصول على.
لذلك، أنا ذاهب للذهاب إلى الأطباق ومن ثم تنفيذ عملية البحث.
حتى الآن ترى أنه من خادم Express الخاص بي،
أنا الوصول إلى بلدي MongoDB.
لذلك، سوف تفعل العثور وفي العثور على أنا ذاهب الآن للتعامل مع الطلب.
حتى أستطيع أن أقول أن الأطباق تجد،
بما أن ذلك سيعود وعدا،
ثم يمكنني التعامل مع ذلك في الداخل هنا.
لذلك، سأقول طبق وحتى إذا كان الوعد يحل بشكل صحيح،
وسوف تحصل عليه في ذلك الحين وهكذا سأقول طبق وبعد ذلك سوف نتعامل مع
رمز الحالة الدقة هو 200 وبعد ذلك سنقول
الدقة تعيين نوع محتوى رأس.
نظرًا لأننا سنعيد القيمة كـ json،
لذا سنقوم بتعيين ذلك على تطبيق json.
حسناً، هذا سيعيد مجموعة من الأطباق
حتى أستطيع أن أقول ببساطة الأطباق وبعد ذلك سنقول res.json.
وبالتالي فإن res.json تأخذ كمدخل في سلسلة json
ثم إرسالها مرة أخرى إلى موكلي.
لذلك، عند استدعاء res.json وتوفير القيمة وبعد ذلك سوف
تأخذ ببساطة المعلمة التي تعطيها هنا ومن ثم إرسالها مرة أخرى كرد json.
فإنه سيتم وضع هذه الأطباق في الجسم
من رسالة الرد ومن ثم إرسالها مرة أخرى إلى الخادم.
الآن، يمكننا التعامل مع الخطأ
هنا بقول الخطأ التالي.
يمكننا أيضا أن نفعل خطأ الصيد فقط من أجل الاكتمال.
أنا فقط ذاهب لوضع كل من هذه في مكان هنا،
بحيث سيتم التعامل مع كليهما على هذا النحو.
حتى إذا تم إرجاع خطأ،
ثم ذلك سوف ببساطة تمرير الخطأ
إلى معالج الخطأ العام للتطبيق الخاص بي
والسماح أن تقلق حول كيفية التعامل مع الخطأ.
لذا نحن سَنُرسلُه إلى ذلك.
لذلك ترى كيف أستخدم عملية البحث ثم قم بتنفيذ الطلب هنا.
الآن، لهذا المنصب،
كما كنت تتوقع بالفعل،
وأنا ذاهب إلى القيام dishes.create
لأننا في طريقنا إلى إنشاء طبق جديد هنا.
لذا، تذكر أننا نشاهد بالفعل الأطباق تخلق
استخدام الطريقة في وقت سابق وتذكر أن محلل الجسم كان قد قام
بالفعل بتحليل ما هو موجود في نص الرسالة وتحميله
على خاصية الجسم للطلب.
لذا، سأقوم فقط بأخذ نص الطلب ثم تحليله كمعلمة
لطريقة dishes.create الخاصة بي والتعامل مع قيمة الإرجاع.
لذا، سنقول حينها وهذا سيعيد
طبق وسنتعامل مع ذلك هنا
لذلك سنقول إذا كانت الأطباق تعود بشكل صحيح وإذا أطباق نشرت بشكل صحيح، وسوف يقول الدقة.
حسنا دعونا نفعل console.log لاستخدامنا الخاص.
على جانب الخادم سنفعل console.log قائلا «صحن خلق» طبق هنا.
دعونا تسجيل هذا الطبق إلى وحدة التحكم وبعد ذلك سنقول هذين رمز حالة الراحة.
سنقوم فقط بنسخ هذا الرمز ثم لصقه هناك وفي هذه الحالة،
نحن نعيد الطبق هنا.
الطبق الذي جاء كمعلمة هنا ثم دع
العميل يتعامل مع هذه القيمة على جانب العميل،
كل ما يتم إرجاعه في الطبق.
الآن، كما أنها سوف تضيف في
هذا هنا ومن ثم الصيد.
إذن هذه هي الطريقة التي نتعامل بها مع هذا المنصب.
ل PUT، لأن PUT غير مسموح به،
لذلك نحن ذاهبون إلى ترك الأمر على هذا النحو.
ل DELETE، ونحن في طريقنا إلى حذف جميع الأطباق.
لذلك سوف نقول، «أطباق، إزالة.»
هذه هي أساسا عملية خطيرة.
لذلك كنت إزالة جميع الأطباق من
الخادم وهكذا سوف نقول،
«dishes.Remove ثم» و «ثم» سوف تحصل على بعض الاستجابة.
لذلك سنقول فقط، «resp هنا» والطريقة
التي سنتعامل بها مع هذا الرد هي ببساطة أخذ هذه القيمة ثم إعادتها إلى العميل.
لذلك سنقول، «Res.StatusCode 200 نوع المحتوى json التطبيق،»
وبعد ذلك سنقوم ببساطة بإرسال الاستجابة مرة أخرى إلى العميل وسوف نتعامل مع الخطأ
تماما كما فعلنا في وقت سابق.
هذه هي عملية DELETE.
لذلك ترى أننا الآن نقوم بعمل GET و
POST و PUT و عملية DELETE.
الآن نحن ذاهبون إلى الاستمرار في نفس مع نقطة النهاية /dishid.
حتى في هذه الحالة،
ونحن على وجه التحديد عزر الحصول على طبق معين.
نحن ذاهبون إلى إعادة تلك القيمة طبق محددة.
حتى في جيت،
ما نقوم به هو أننا سوف نقول «dusines.Findbyid.
لذا فإن FindByID هي طريقة متوفرة من mongo بالإضافة إلى برنامج تشغيل MongoDB.
لذلك سوف نقول، «Req.Params.dished».
أذكر أننا نعرف بالفعل أن معرف الطبق موجود في خاصية params.
لقد تعلمت بالفعل عن هذا في وقت سابق.
لذلك سأقول، «فيندبيد (Req.params.dished)»
وبعد ذلك والآخر.
لذلك أنا فقط ذاهب لنسخ ذلك ثم آخر من
هناك ومن ثم النزول إلى DishRouter
ثم ببساطة لصق ذلك هنا.
لذلك سنقول، "res.statuscode200
تطبيق json.res.jsondish ثم معالجة الخطأ.
بالنسبة لـ POST، من الواضح أننا لن نتعامل مع المشاركة لنقطة نهاية /DISHID.
لذا نحن سَنَتْركُه على هذا النحو.
بالنسبة لـ PUT، سنقوم بتحديث
طبق معين يتم تحديده بواسطة معرف الطبق الخاص به.
لذلك هذا هو المكان الذي سوف نستخدم الأطباق. findbyidandupdate.
لذلك هذه هي الطريقة التي سنستخدمها،
findbyidandupdate وهذا يأخذ المعلمة الأولى
req.params.Dished والقيمة الثانية هي
المجموعة
وسيكون التحديث في نص الرسالة.
لذلك أنا فقط ذاهب لاسترداد ذلك من
الجسم ريك وبعد ذلك أيضا العلم الآخر الذي أنا ذاهب إلى الحصول عليه.
لذلك سوف نقول، «جديد: صحيح»، بحيث هذه الطريقة فيندبيد ستعيد
الطبق المحدث كسلسلة جسون في الرد.
لذلك هذا هو ما سأحصل عليه هنا وبعد ذلك عندما تأتي هذه القيمة،
أنا ذاهب فقط لاتخاذ الطبق
وبعد ذلك ببساطة إعادة الطبق إلى جانب العميل.
لذلك سأقول res.jason (طبق) وبعد ذلك سوف نتعامل مع الخطأ في المقابل.
وأخيرا لحذف.
بالنسبة إلى DELETE مرة أخرى،
فإن الطريقة المقابلة التي
سنستخدمها هي طريقة Mongo المسماة FindByidAndRemove.
لذلك يمكنك أن ترى أن لدينا هذه الطريقة تسمى
findbyidandRemove وهذا findbyidandRemove،
سوف تأخذ req.Params.Dished لأن هذا هو الطبق الذي نحاول إزالته.
ثم عندما يتم حذف هذا،
لذلك تماما مثل تعاملنا مع هذا هنا،
لذلك أنا مجرد الذهاب لنسخ هذا الرمز من dishes.Remove.
هو نفس الشيء الذي سأفعله هنا أيضاً
لذلك فيندبيداندريفورم وأيا كان الرد أحصل عليه،
وأنا ذاهب لإعادته إلى موكلي.
مع هذا قمنا بتحديث ديشروتر.
دعونا حفظ جميع التغييرات التي قمنا بها حتى
الآن وبعد ذلك سنذهب وبدء الخادم لدينا ومن ثم نرى ما يفعل.
حتى الذهاب إلى المحطة أو نافذة الأوامر، بدء تشغيل الخادم.
لذلك سأقول «npm start» والخادم الآن قيد التشغيل.
سنستخدم ساعي البريد للتواصل مع هذا الخادم
لذلك دعونا نذهب إلى ساعي البريد ومن ثم تنفيذ عمليات معينة.
لذا هنا ترى ساعي البريد الخاص بي يركض هنا
لذلك اسمحوا لي أن أفعل عملية GET على المضيف المحلي: 3000/أطباق.
لذلك عندما تقوم بعملية GET كما ترى،
ستعود سلسلة فارغة.
قاعدة البيانات الخاصة بي فارغة الآن لذلك ليس لدي أي شيء هناك.
لذلك أنا ذاهب فقط ليتم إرجاع سلسلة فارغة.
دعونا نشر طبق.
لذلك عند نشر طبق،
من الواضح في الجسم،
سوف تكون أرفق طبق وسيتم تعيين الجسم ليكون نوع json التطبيق.
الآن، لنشر طبق،
لقد أعطيتك بالفعل ملف db.json في موارد التمرين.
حتى مجرد فتح ملف db.json ثم نسخ الطبق الأول جدا من
هناك ومن ثم سنقوم لصقه هنا ثم نشر هذا الطبق.
لذلك، اسمحوا لي أن أذهب إلى ملف db.jason.
دعني أنسخ الطبق الأول من هنا
لذلك أنا فقط ذاهب لنسخ
الطبق بأكمله على طول الطريق إلى هناك وبعد ذلك أنا ذاهب لنشر هذا الطبق.
هذا يحتوي على الكثير من الحقول التي لدينا هنا بالفعل.
دعونا نشر هذا الطبق إلى الخادم ونرى ما يحدث.
لذا سأعود إلى ساعي البريد
هنا، في بيانات النموذج،
في الجسم، اسمحوا لي لصق الطبق في مكانه.
لذلك، لدينا التفاصيل الكاملة للطبق هناك.
دعونا POST هذا الطبق إلى الخادم.
ثم، بمجرد نشر الطبق إلى الخادم،
ترى أن ساعي البريد لديه،
اسمحوا لي فقط تقليص هذا،
ثم ترى في الجزء السفلي أن هذا الطبق معين قد تم نشره إلى قاعدة البيانات،
إلى قاعدة بيانات MongoDB بواسطة الخادم الخاص بي.
لذلك، ترى أن القيمة التي تم إرجاعها
هنا تظهر عندما تم إدخال الطبق في هذا الخادم.
لذلك، لديك كريتيدات و أوبداتيدات وأضاف هناك.
ترى أن الحقول المتبقية كلها مخزنة هناك.
لاحظ بشكل خاص كيف يتم تخزين قيمة السعر هناك.
هذه هي الطريقة التي تخزن بها العملة قيمة السعر.
لذلك، عندما تحصل على قيمة الإرجاع،
تحتاج إلى تفسير هذا بشكل مناسب على جانب العميل الخاص بك ما يعنيه ذلك.
لاحظ أيضًا أنه تمت إضافة المعرف إلى طبقي ولكل تعليق نفسه،
لأن كل تعليق من التعليقات هو نفسه مستند فرعي.
سيكون لديك UpdateDat و CreateDat إضافة،
والمعرف لكل من التعليقات إضافة أيضا في هناك تلقائيا من قبل قاعدة البيانات الخاصة بي.
ها أنت ذا حتى الآن،
تم إضافة هذا الطبق إلى قاعدة البيانات الخاصة بي.
دعونا مرة أخرى تنفيذ عملية جيت،
ومن الواضح في هذه المرحلة،
يجب على الخادم إرجاع طبق معين واحد تمت إضافته في.
لذلك، فإنه سيعود مجموعة من الأطباق هنا،
وذلك كما ترون، فإنه يعود مجموعة من الأطباق.
وبطبيعة الحال، تحتوي هذه المجموعة على طبق واحد فقط
أو أن طبق معين قد عاد هنا.
حتى الآن، جيد جدا.
لذلك، دعونا نفعل PUT على الأطباق ونرى ما يحدث.
عندما تقوم بعمل PUT، من الواضح أنه يقول،
«عملية PUT غير معتمدة على الأطباق»، كما نتوقع.
دعونا نفعل DELETE.
القيام بعملية DELETE،
فإنه يعود هذا الرد قائلا،
«N يساوي واحد»، حسنا،
واحد يعني أنه قد حذف طبق واحد.
دعونا الآن مرة أخرى، قم بإجراء عملية GET،
ومن ثم سترى أن أطباقي فارغة كما توقعنا.
لذلك، ترى أن
عمليات GET و PUT و POST و DELETE كلها تعمل بشكل صحيح.
الآن، اسمحوا لي بوست الطبق مرة أخرى
إلى الخادم لأنني أريد أن يكون طبق واحد في الخادم.
لذلك، اسمحوا لي POST هذا الطبق،
وستلاحظ أن الهوية قد تغيرت الآن.
لذلك، اسمحوا لي أن حدد هذا المعرف،
وبعد ذلك سوف نفعل جيت مع معرف في المكان.
عندما تقوم بعمل GET مع المعرف في مكانه،
ترى أنه يعيد هذا الطبق المحدد كما تتوقعه.
دعونا نذهب إلى المحطة ونرى ما
يتم طباعته على المحطة أو نافذة الأوامر الخاصة بك.
لذلك، الذهاب إلى المحطة أو نافذة الأوامر الخاصة
بك، ترى أنه يقوم بطباعة كل هذه الأشياء على نافذة الأوامر.
لذلك، عندما قمنا بعملية GET الأولى،
تقول، GET /الأطباق.
لذلك، وهذا هو مرة أخرى،
مورغان القيام بهذا العمل بالنسبة لك، فإنه يتم طباعتها،
وتتبع هذه المعلومات وتقول
طبق تم إنشاؤها ومن ثم تم طباعة معلومات طبق معين،
وبعد ذلك يقول POS/أطباق، GET /أطباق،
وبعد ذلك عندما فعلت PUT عاد 403
هناك وكنت مرة أخرى خلق الأطباق وهلم جرا.
لذلك، ترى أن الخادم الخاص بك يقوم بالفعل بكل العمل،
ويتم إدخال هذه الأشياء في قاعدة بيانات MongoDB كما كنت تتوقع.
الآن، نعود إلى ساعي البريد،
دعونا نفعل بوست على الأطباق.
الآن، هذا غير معتمد على جانب الخادم،
لذلك يجب أن يقول الخادم الخاص بك،
«عملية POST غير معتمدة على نقطة النهاية هذه،» كما قد تتوقع ذلك.
دعونا نفعل عملية PUT.
عندما تقوم بعملية PUT،
ما سأقوم به في عملية PUT هو أنني سأقوم
باستبدال التسمية هناك.
لذلك، في جسدي من الرسالة.
لذلك، تذكر أنه إذا نظرتم إلى ملف Db.json،
فإن التسمية
لذلك ستكون جديدة، ولذا سأقوم بتغيير هذه التسمية إلى ساخنة.
نظرًا لأن هذا يجب أن يكون في Json،
لذا قم بتسمية أيضًا في علامات اقتباس Json،
ثم دعنا نقوم بعمل PUT على نقطة النهاية المحددة هذه.
كانت عملية PUT ناجحة،
وهكذا ترى أنه عند الانتهاء من عملية PUT،
ستلاحظ أن التسمية قد تغيرت الآن من جديد إلى ساخن هنا،
ولاحظ على وجه الخصوص، قيمة
CreateDat وقيمة UpdateDat.
لذلك، لاحظ أن هذا السجل تم إنشاؤه
في هذه النقطة الزمنية وتم تحديثه بعد ذلك بقليل.
لذلك، تم التحديث عن طريق عملية بوت التي قمت
بها للتو على هذا الطبق معين.
دعونا حذف الطبق.
هذا مسموح به لذلك، سنقوم بحذف الطبق،
ومن ثم سيتم حذف الطبق وسيتم إرجاع القيمة.
الآن، إذا قمت بإجراء عملية GET
على نقطة نهاية الأطباق، سترى أن هذا سيعود فارغة.
لذلك، كنت قد تمكنت للتو من حذف الطبق من قاعدة البيانات لدينا.
ما سأقوم به هو إجراء
عملية GET على طبق غير موجود ونرى ما يحدث.
عندما أقوم بإجراء عملية GET على طبق غير موجود،
فإنه يعود فارغة لأن هذا الطبق غير موجود.
لذلك، فإنه يعود قيمة فارغة قائلا أن الطبق غير موجود.
الآن، اسمحوا لي بإجراء عملية جيت على غير أوبجكتيد ونرى ما يحدث.
يعود كما ترى.
اسمحوا لي أن معاينة ذلك.
لذلك، تقول، «فشل الإرسال إلى ObjectId للقيمة هنا في المسار.»
لذلك، سأكون من الواضح أن هذا ليس
ObjectId صالح لذلك تمكنت فقط من حذف جزء منه،
ومن ثم تنفيذ العملية حتى يعود خطأ قائلا،
لذلك ترى هناك 500 خطأ خادم داخلي.
لم يتمكن الخادم من التعامل مع هذا ثم إرجاع هذه القيمة هنا.
لذلك، تقول، «لا،
هذا غير مسموح به».
لذلك، لأن هذا ليس ObjectID صالح.
لذلك، حتى يتم التعامل مع الأخطاء بشكل مناسب كما ترون هنا.
لذلك، اسمحوا لي مرة أخرى، القيام بعملية GET على الأطباق،
والخادم الخاص بك لا يزال قيد التشغيل،
وسوف يعود قيمة فارغة هنا.
لذلك، رأينا كيف عن طريق تعديل
خادم REST API الخاص بنا لتكون قادرة على التفاعل مع خادم MongoDB.
لدينا الآن خادم REST API كامل قادر على تخزين
واسترداد وتنفيذ عمليات مختلفة على
البيانات المخزنة على خادم MongoDB الخاص بي.
مع هذا، نكمل هذا التمرين.
لذلك، في هذا التمرين،
رأينا كيف يمكننا التفاعل مع خادم REST API الخاص بنا،
وبدوره، مع خادم MongoDB،
ثم نقوم بالاستفادة من خادم MongoDB لتخزين واسترجاع البيانات من الخادم.
أنت قادر على التفاعل من
تطبيق Express الخاص بنا مع خادم MongoDB باستخدام Mongoose.
هذا هو الوقت المناسب بالنسبة لك للقيام جيت الالتزام مع الرسالة،
«إكسبريس ريست أبي مع النمس الجزء الأول.»