الجزء الثاني من هذا التمرين يتعامل مع
مختلف الحصول على وظيفة وحذف العمليات على المستندات الفرعية داخل الوثيقة.
كما رأينا في المثال للأطباق،
رأينا أن التعليقات يتم تضمينها داخل الطبق نفسه كوثيقة فرعية،
بالطريقة التي عرفنا بها كل من مخطط التعليق ومخطط الطبق،
ومن ثم تحديد نموذج الطبق من خلال
تضمين مخطط التعليق في مخطط الطبق كمجموعة من تعليقات.
ورأينا في التمرين السابق كيف يتم تضمين التعليقات داخل
صفيف في شكل صفيف مستندات داخل كل مستند طبق.
فكيف يمكننا إجراء تعديلات على التعليقات نفسها؟
كيف نحصل على جميع قائمة التعليقات للطبق؟
كيف نقوم بتعديل تعليق محدد في الطبق وما إلى ذلك؟
لذلك هذا هو ما سنراه حول كيفية
دعمهم باستخدام مختلف الحصول على وظيفة وضع وحذف العمليات على
أطباق طبق مائل تعليقات طبق معرف مائل والأطباق
مائل طبق معرف تعليقات مائلة مائلة تعليق نقاط نهاية API REST.
للبدء في هذا التمرين،
مرة أخرى، والعودة إلى جهاز توجيه الطبق، فقد
شاهدوا بالفعل كيف نتعامل مع نقطة نهاية الخط المائل ونقطة نهاية معرف طبق مائل.
الآن، الكثير من هذا العمل الذي نقوم به هنا مفيد بالفعل بالنسبة لنا،
لذلك ما سأقوم به هو نسخ هذا الرمز،
وبعد ذلك سنقوم بتحرير هذا الرمز بشكل مناسب للتعامل مع التعليقات ومعرف التعليق.
لذلك أنا ذاهب لنسخ هذا الرمز بأكمله الذي لدينا
هنا على حد سواء للخط المائل وخط الخط الذهبي معرف،
وبعد ذلك سنقوم لصقه الحق أدناه هنا مرة أخرى.
وبعد ذلك سندخل ونعدل كل واحد منهم
لذلك رأينا أنه إذا نظرتم إلى الوراء،
أول واحد هو التعامل مع شرطة مائلة التي سيتم تركيبها على نقطة نهاية أطباق مائلة.
والقادم هو التعامل مع معرف طبق مائل.
لذلك يجب أن يكون الثالث التعامل مع تعليقات شرطة مائلة للطبق المائل.
حتى الذهاب إلى هنا،
هذا الطريق طبق جهاز التوجيه الثالث سيكون شرطة مائلة لتعليقات الخط المائل.
ثم آخر واحد، بطبيعة الحال،
سيكون شرطة مائلة
لتعليقات معرف الطبق ثم شرطة نقطية معرف التعليق.
حتى الآن بعد أن قمنا بتحديث هذه المسارات هنا،
والآن الخطوة التالية هي الذهاب وإصلاح
التعليمات البرمجية في الحصول على وظيفة وضع وحذف العمليات هنا.
لذلك سنبدأ مع نقطة النهاية لتعليقات الخط المائل للطبق.
حتى في حالة طبق مائل ID تعليقات نقطة النهاية،
لذلك سنفعل الأطباق تجد ولكن بدلا من القول أطباق تجد،
ونحن سوف نفعل الأطباق تجد عن طريق
ID وهكذا سوف نجد طبق معين أننا نبحث عن.
حتى هنا، ونحن سوف نبحث عن أن req params طبق معرف،
لذلك سوف نبحث أولا عن الطبق،
وهكذا هذا سيعود طبق معين.
لذلك عندما يعود هذا الطبق المحدد هنا،
ثم ما سوف تحقق من الداخل هنا
هو أنه إذا طبق لا يساوي فارغة.
فمن الممكن جدا أن الطبق غير موجود،
لذلك إذا كنا نبحث عن طبق معين مع معرف طبق،
هذا الطبق قد لا يكون موجودا،
لذلك نحن بحاجة للقلق حول التعامل مع هذا الوضع بالذات.
لذلك دعونا التعامل مع هذا الجزء داخل هنا،
وحتى إذا لم يكن فارغًا، فهذا يعني أن الطبق موجود.
لذلك أنا ذاهب لقطع هذا خارج ومن ثم لصقه في هناك.
ثم في هذه الحالة،
لأن الطبق ليس فارغًا،
لذلك سنعود رمز الحالة والرأس المحدد
ثم هذا هنا سنعود تعليقات الطبق،
لأنه يطلب منا إرجاع التعليقات فقط لهذا الطبق المحدد، لذلك سنقول،
«أطباق تجد عن طريق ID،
ثم req المعلمات معرف الطبق ثم طبق».
وهكذا سنعود تعليقات الطبق هنا.
خلاف ذلك، لذلك هذا هو الجزء الآخر.
لذلك مما يعني أن الطبق غير موجود.
حتى في هذه الحالة،
ونحن سوف بناء خطأ هنا عن طريق قول أخطاء جديدة وبعد ذلك سنقول
طبق req params معرف طبق لم يتم العثور عليه.
لذلك لم يتم العثور على هذا الطبق معين،
لذلك من الواضح أننا لن تكون قادرة على إعادة التعليقات للطبق غير موجود.
لذلك في هذه الحالة،
لذلك سنقوم بإنشاء كائن خطأ جديد ومن ثم سنقوم
بتعيين الحالة في كائن الخطأ إلى 404.
مرة أخرى، هذا هو 404 لم يتم العثور عليها،
وبعد ذلك سنعود الخطأ التالي.
الآن، لماذا نفعل هذا؟
لأنه إذا قمت بإرجاع هذا كخطأ، كما تذكر،
سيتم التعامل مع هذا من قبل ملف app.js الخاص بك،
وذلك في ملف app.js،
الحق في أسفل هنا،
لدينا معالج الخطأ هنا.
لذلك عندما يتعلق الأمر هنا،
سيؤدي ذلك إلى تعيين الباقي أو الحالة إلى حالة نقطة الخطأ،
والتي قمنا بتعيينها إلى 404،
بحيث يتم إرجاعها،
ومن ثم سيأخذ هذا الخطأ ببساطة ثم يعرض هذا الخطأ هنا.
بحيث سوف تأخذ الرعاية من تقديم الأخطاء.
لذلك هذا سيعود رسالة الخطأ مرة أخرى إلى عميلنا.
هذا هو ما نستدعيه هنا،
لذلك إذا كان الطبق غير موجود،
سنقوم فقط بإرجاع هذا الخطأ هنا من عملية الحصول على.
الآن، للنشر في حالة المشاركة،
نتوقع أن يتم
إرجاعها معرف الطبق ثم سنبحث عن الطبق،
وبعد ذلك سنأخذ مجموعة التعليقات
من الجسم ثم ندفعها إلى الطبق هناك.
لذلك سنقول أطباق، مرة أخرى، هنا،
سيكون علينا أن نفعل البحث عن طريق معرف لأننا نبحث عن طبق معين هنا.
لذلك بالنسبة للوظيفة، سنقول العثور على طبق من قبل معرف ثم طبق،
وحتى داخل هنا،
إذا كان الطبق موجودا،
ثم سوف نتعامل مع الطبق بشكل مناسب.
إذا لم يكن كذلك، ثم سيكون لدينا لإرسال رسالة الخطأ.
لذلك اسمحوا لي أن نسخ هذا الجزء من الحصول وبعد ذلك،
ونحن سوف تحل محل هذا هنا.
لذلك من الواضح، إذا كان الطبق غير موجود،
ثم نحن ذاهبون للعودة هذا الخطأ هنا،
ولكن إذا كان الطبق موجودا، في هذه الحالة،
وسوف نعود رمز الحالة 200 رأس مجموعة.
ولكن قبل أن نعيد القيمة،
ما سأفعله هو أن أقول تعليقات طبق،
لذلك نحن نشر مجموعة جديدة من التعليقات للطبق.
لذلك سنقول تعليقات طبق دفع الجسم req.
لأن نص الرسالة يحتوي على جميع التعليقات التي تحتاج إلى دفعها هنا،
وبعد ذلك، سنقول، «حفظ الطبق».
وحتى إذا كان حفظ يعود بنجاح مع الطبق هنا،
لذلك سوف نرسل الطبق المحدث من هنا.
لذلك هذا الجزء حيث نحن بناء رمز الحالة،
وسوف نفعل ذلك داخل هنا وبعد ذلك سوف نرسل مرة أخرى
Res.json والطبق الذي حصلنا عليه هنا.
لذلك، ما نقوم به هو أننا حفظ الطبق هنا.
نحن أولا دفع التعليقات في الطبق هناك،
ومجموعة جديدة من التعليقات في الطبق هنا،
ومن ثم نحن حفظ الطبق المحدث هنا.
ثم بعد الحفظ،
سنقوم بإرجاع الطبق المحدث مرة أخرى إلى المستخدم هنا.
ثم إذا كان هناك خطأ،
ثم سوف نتعامل مع الخطأ تماما كما فعلنا هنا.
إذا لم يكن الطبق موجودًا، بالطبع،
سنقوم بإرجاع الخطأ قائلا إن الطبق غير موجود.
لذلك، هذا هو لهذا المنصب.
عملية بوت، بطبيعة الحال،
غير معتمدة على الأطباق.
لذلك، في هذه الحالة،
ونحن نحاول إجراء عملية بوت
على الأطباق، req.params.Dishid/التعليقات.
لذلك، هذا غير مسموح به.
لذا، هذا ما نقوله لعملية PUT.
لعملية الحذف،
ما سنفعله هو أولاً العثور على الطبق.
لذلك، سوف نقول طبق. findbyid.
لذلك، حذف يعني أننا إزالة جميع التعليقات من الطبق،
وليس الطبق نفسه،
ولكن نحن إزالة جميع التعليقات من الطبق.
لذلك، في هذه الحالة،
ما كنا في نهاية المطاف القيام به هو كما يلي: حتى إذا كان الطبق ليست فارغة،
أذكر أننا بحاجة إلى التعامل معها بالقول ثم طبق.
إذا لم يكن الطبق
فارغًا، فسنقوم بإزالة جميع التعليقات من الطبق.
لذلك، سأقوم بنسخ هذا الرمز ثم لصقه هنا،
وبعد ذلك سنقوم بتحرير هذا الرمز، ثم حذفه.
سنرى ما إذا كان الطبق غير فارغ،
ثم سيعودون الطبق هنا.
لذا، إذا لم يكن الطبق فارغًا،
فإن وات سنتعامل مع هذا هو كما يلي.
لذلك، سيكون لدينا للذهاب في وحذف كل من التعليقات.
لذلك، سنقول ل (فار ط =
(dish.comments.length -1) إ> = 0؛ ط -).
لذلك، نحن نذهب حرفيا في وإزالة كل تعليق.
لذلك، سنقول
dish.comments.id (dish.comments [i]. _id).
نحن سَنَقُولُ إزالة.
لذلك، نحن ذاهبون إلى إزالة كل من الأطباق،
واحد تحت كل من التعليقات واحدا تلو الآخر.
لذلك، هذا هو ما سنفعله للتعليقات.
ثم مرة واحدة لدينا إزالة جميع التعليقات للطبق،
ثم سيكون لدينا لحفظ الطبق ومن ثم إرسالها مرة أخرى.
لذلك، في وقت سابق أيضا عندما نقوم بتعديل الطبق،
وهذا ما فعلناه هنا.
لذلك، أنا ذاهب لنسخ هذا الجزء،
ومن ثم تأتي إلى هنا، ومن
ثم أقول dish.save،
ثم سنعود الطبق
هنا للإشارة إلى الطبق المحدث الذي يتم إرجاعه هنا.
لذلك، هذه هي الطريقة التي سوف نحذف التعليقات.
لذلك، هنا نحن ذاهبون،
والآن لا توجد طريقة سهلة لسحب حرفيا
جميع التعليقات من المصفوفة عندما يكون لديك وثيقة فرعية.
لذلك، عليك أن تذهب في وحذف كل وثيقة فرعية واحدا تلو الآخر.
لذلك، هذا هو ما أفعله في هذا لحلقة هنا.
لذلك، أنا أقول ل (فار ط = dish.comments.length).
لذلك، أنا أبحث في مجموعة من التعليقات ثم بدءا من
التعليق الأخير في هذا الصفيف على طول الطريق إلى التعليق الأول،
وأنا ذاهب في ثم حذف التعليق عن طريق التعليق هنا باستخدام
عملية الإزالة على المستند الفرعي.
لذا، فإن الطريقة التي سنصل إليها إلى مستند ثانوي هي
بقول الطبق ثم التعليقات هي اسم الحقل ثم أقول معرف هنا.
لذلك، هذه هي الطريقة التي يمكنك الوصول إليها إلى مستند ثانوي،
وداخل هنا سوف تحدد معرف المستندات الفرعية التي تحاول الوصول إليها.
لذا، سيعطيك هذا الأمر برمته الوصول إلى المستند الفرعي،
ثم نسمي طريقة الإزالة على المستند الفرعي،
بحيث تتم إزالة المستند الفرعي من صفيف المستندات الفرعية.
ثم بعد ذلك، بعد أن حذفنا جميع التعليقات،
سأحفظ التغييرات وهذا كل شيء.
لذلك، سيتم حذف جميع تعليقاتي من ثم الطبق.
الآن، سوف نتعامل مع نقطة النهاية التالية التي هي الموقوقة/: CommentID.
لذلك، في هذه الحالة،
سنبدأ أولاً بتحديد موقع الطبق ثم بعد تحديد موقع الطبق،
ثم علينا التأكد من وجود الطبق،
ثم نتعامل مع الطبق.
لذلك، أنا ذاهب لحذف هذا الجزء،
وبعد ذلك سوف نقول دعونا نسخ هذا الجزء من بوابة التي كان لدينا في وقت سابق
لأننا بحاجة إلى أن تكون قادرة على التعامل مع الوضع
حيث إما الطبق غير موجود أو الطبق موجود ولكن التعليقات غير موجودة،
أو الطبق نفسه غير موجود.
لذلك، هناك ثلاثة شروط أحتاج إلى اختبارها.
لذلك، سنقول إذا (طبق! =
نول && dish.comments.id (Req.params.commentid)! =
null، مما يعني أن الطبق نفسه موجود وكذلك التعليقات موجودة في الطبق،
عندها فقط يمكننا إرسال تعليق محدد تم طلبه.
لذلك، في هذه الحالة،
سوف نقول StatusCode هو 200، تطبيق seteader json،
ومن ثم هنا سوف نرسل dish.comments
مرة أخرى، ونحن نرسل هذا التعليق معين.
لذلك، هذا هو التعليق المحدد الذي نرسل ماكس.
لذلك، سيسمح لنا هذا باسترداد تعليق محدد من مجموعة التعليقات.
الآن، سنقول آخر إذا طبق يساوي لاغية.
وبالتالي فإن الأطباق فارغة،
ثم بالطبع سيكون لدينا للإشارة إلى أن الطبق غير موجود
والشرط الأخير هو إذا كان التعليق نفسه فارغ.
لذلك، في هذه الحالة أيضا لا بد لي من الإشارة إلى أن التعليق نفسه غير موجود،
وهذا معرف تعليق معين غير موجود حتى في هذه الحالة،
سأقول
تعليق خطأ جديد req.params.commentid لم يتم العثور عليه.
إذن، ثلاثة شروط
أولاً، عليك التأكد أولاً من وجود الطبق وتعليقات الطبق موجودة،
إذا فعلوا ذلك، يمكنني إرسال تعليق محدد،
إن لم يكن كذلك، إذا لم يكن الطبق نفسه غير موجود على جانب الخادم في قاعدة البيانات،
فسأشير إلى أن الطبق غير موجود ولكن إذا كان
الطبق موجود ولكن التعليق غير موجود،
ثم سأرسل الرسالة التي تقول أن التعليق غير موجود.
لذلك، لاحظ أن لديهم للتعامل مع جميع الشروط الممكنة هنا ل GET.
بالنسبة لـ POST بالطبع،
لا يتم دعم عملية النشر على نقطة النهاية هذه،
لذلك سنقول
التعليقات مائلة req.params.Communtid.
لذلك، لا يتم دعم عملية POST على معرف هذا التعليق. الآن ماذا عن PUT؟
PUT هي حالة أكثر إثارة للاهتمام هنا.
لذلك، مرة أخرى حتى بالنسبة للوضع،
يجب أن أتعامل مع كل هذه الشروط الممكنة،
لذلك سأنظر إلى هذا وأقول، حسنًا لهذا،
دعني أنسخ هذا الرمز بأكمله لأن علينا التعامل مع
كل هذه الاحتمالات ثم سأخبرك بالضبط كيف نتعامل مع حالة PUT هنا.
لذلك، في حالة PUT،
أولا بالطبع نحن بحاجة إلى تحديد موقع المذبحة.
لذلك سيقولون أطباق تجد بواسطة معرف req param ID،
ثم إذا كان الطبق موجودًا والتعليق نفسه،
فأنا أعلم أنه يمكنني تحديث التعليق.
خلاف ذلك، من الواضح أن هذين الشرطين يجب
أن تؤخذ الرعاية، أن التعليق غير موجود أو الطبق غير موجود.
يتم التعامل مع هذين من قبل هذه القضية.
الآن، هنا هو الوضع الخاص الذي لدينا.
لذلك، إذا كان الطبق موجودًا والتعليق المحدد الذي أبحث عنه موجود أيضًا،
فإن ما أعرفه هو أنه في نص الرسالة،
يتم تحديد التحديث للتعليق.
لذلك أنا بحاجة إلى تحديث ذلك.
لذلك، في مكان ما هنا أفعل التعديلات،
أفعل طبق حفظ هنا،
لذلك أنا ذاهب للذهاب في ونسخ قليلا من هذا الرمز من هنا،
وبطبيعة الحال هذا ليس الشيء الصحيح ولكن أنا فقط بحاجة إلى جزء من التعليمات البرمجية من هناك،
لذلك سوف تأتي إلى بوت.
اسمحوا لي أن لصق في مكان هنا
وبعد ذلك سوف اقول لكم بالضبط كيف هم ذاهبون للتعامل مع هذا.
لأنني بحاجة إلى طبق حفظ جزء.
لذا، كيف نتعامل مع التحديث إلى تعليق محدد؟
لذلك بالنسبة للتحديث إلى تعليق محدد،
ما نعرفه هو أن هذا التعليق يحتاج إلى تحديث،
لذلك نحن نعلم أن الطبق موجود والتعليق نفسه موجود.
أريد تحديث حقول التيار.
الآن، إذا كان هناك تعليق موجود بالفعل، فلا أريد
السماح للمستخدم بتغيير مؤلف التعليق،
فيجب الاحتفاظ بالمؤلف.
الحقلان الوحيدان اللذان سأسمح بتحديث المستخدم هما التقييم.
لذلك داخل نص رسالة PUT الواردة،
يمكنني إما تضمين
التقييم المحدث
أو التعليق المحدث.
هذان هما الأمران الوحيدان اللذان سأسمح للمستخدم بتغييرهما.
حتى إذا كان تصنيف الملكية ies الجسم غير المباشر لاستدعاء أن الجسم
سوف تحتوي على التحديث الذي نحاول القيام بذلك في هذه الحالة سنقول طبق.
لذلك سوف نقول تعليقات طبق،
لذلك اسمحوا لي فقط نسخ هذا الجزء.
تعليق طبق معرف.
الآن هذه طريقة بسيطة للتعامل مع هذه المشكلة هنا.
نظرًا لعدم وجود طريقة محددة لتحديث
تعليق محدد موجود في مستند فرعي،
فلا توجد طريقة محددة للقيام بذلك.
لذلك هذا هو الحل الذي وجدته يبدو أنه يعمل بالنسبة لنا،
لذلك سنقول تعليقات طبق تعليق معلمة req تصنيف معرف يساوي req body.rating.
لذلك سوف أقوم بتحديث التقييم.
وبالمثل، إذا كان التعليق موجودًا هناك،
فسأقول تعليق التعليق التعليق التعليق التعليق تعليق الجسم.
لذا، هذه هي الطريقة التي سأقوم بتحديث التصنيف والتعليق،
وأقول مرة عن تحديث التصنيف والتعليق،
وسوف ينقذون الطبق،
وبعد ذلك بمجرد حفظ الطبق ثم سأرسل الرد مرة أخرى.
لذا، لاحظ أن هذه هي الطريقة الوحيدة التي وجدتها سهلة بما فيه الكفاية
لتحديث مستند فرعي مضمن داخل مستند من Mongoose.
لا توجد طريقة صريحة يدعمها Mongoose لتحديث مستند مضمن.
إذن هذا هو الحل الذي وجدته والذي يمكننا من تنفيذ هذه العملية.
الآن لعملية الحذف.
بالنسبة لعملية الحذف، نقوم بحذف
تعليق محدد فقط، لذلك سآخذ هذه المعلومات من
deleter لجميع التعليقات
وبدلاً من حذف جميع التعليقات
سأقوم بحذف تعليق محدد فقط.
لذلك، اسمحوا لي أن نسخ أكثر من حذف.
اسمحوا لي أن لصق في هنا وبعد ذلك سوف نقوم بتحديث هذا.
لذلك، إذا كنت حذف تعليق محدد لذلك سوف تجد أولا الطبق.
إذا كان الطبق غير فارغ،
تذكر أنه في هذه الحالة لا بد لي من التعامل مع كل من الطبق
لا يجري فارغة وأيضا التعليق لا يجري فارغة.
لذلك، سأقول إذا كان
الطبق لا يساوي معلمة معرف تعليقات فارغة وطبق لا تساوي فارغة،
ثم أعلم أن لدي تعليق محدد أريد حذفه.
أنا لا أحذف جميع التعليقات،
أنا أحذف فقط تعليق محدد هنا.
لذلك، سأقول معرف تعليقات الطبق ثم أقوم بحذف التعليق المحدد هنا
وهو req.params.CommentID وإزالة
هذا التعليق معين ومن ثم سأحفظ الطبق المحدث ثم ننتقل إلى ذلك.
الآن، الجزء الآخر أنا بحاجة للتعامل مع كلا الحالتين.
لذلك، اسمحوا لي أن نسخ هذا الجزء آخر إذا طبق لا يساوي فارغة
وهلم جرا ومن ثم استبدال هذا هنا.
لذلك، إذا كان الطبق فارغًا، فسأرسل الخطأ قائلا أن الطبق غير موجود.
إذا كان التعليق فارغًا، فسأرسل الخطأ قائلا إن التعليق غير موجود.
لذا، هذا هو،
هذا هو التحديث الذي أقوم به هنا.
لحذف تعليق محدد،
سأتأكد أولاً من
وجود الطبق والتعليق ثم سأحذف التعليق المحدد ثم سأحفظ
التغييرات
على الطبق ثم أتابع التعامل مع بقية الحالات، هذا كل شيء.
دعونا حفظ التغييرات ومن ثم ننظر في كيفية عمل هذا.
الذهاب إلى المحطة،
أرى خادم MongoDB لا يعمل ويعمل لذلك دعونا نبدأ هناك.
تأكد، بالطبع، من
أن خادم MongoDB قيد التشغيل،
دعنا نبدأ أيضًا الخادم السريع الخاص بنا.
بمجرد تشغيل الخادم السريع الخاص بك وتشغيله،
ما سنفعله هو أننا ننظر الآن على وجه التحديد
في التعليقات ومن ثم تنفيذ العمليات على التعليقات.
لذلك، دعونا نذهب إلى ساعي البريد
ثم تحقق من ما لدينا في قاعدة البيانات ومن ثم محاولة تعديل التعليقات.
لذلك، أنا هنا في ساعي البريد،
لذلك اسمحوا لي أولا الحصول على الأطباق والآن أرى أن جميع الأطباق فارغة.
لذلك اسمحوا لي أن نشر طبق إلى قائمة من الأطباق لذلك اسمحوا لي أن نشر طبق واحد.
أذكر أن لدينا هذا الطبق لها،
وذلك في ساعي البريد كنت قد فعلت ذلك بالفعل لممارسة السابقة.
أنا فقط ذاهب لاختيار ذلك ومن ثم نشر ذلك الطبق وبعد ذلك
ترى أن هذا الطبق معين قد نشرت هنا، أسفل هنا.
يمكنك أن ترى أن الطبق قد تم إنشاؤه هناك.
دعوني الآن أنسخ معرف الطبق الخاص ومن ثم
سأحضر هذا الطبق هنا
لذلك، ترى أن هذا الطبق معين موجود هنا.
أولا، دعونا الحصول على جميع التعليقات.
لذا، إذا كنت تفعل الحصول على التعليقات لاحظت أن
جميع التعليقات لهذا الطبق معين قد عاد.
يمكننا أن نفعل هذا المنصب وحذف أيضا.
دعونا نفعل وضع على ذلك، ومن الواضح أنك لا تستطيع أن تفعل وضعت على
الظهر حتى تلاحظ أن عملية وضع لا تعمل على ذلك.
دعونا نشر تعليق جديد.
حتى لنشر تعليق جديد سوف نذهب إلى الجسم،
ومن ثم اسمحوا لي أن قطع كل هذه وبعد ذلك سنقوم تحرير واحدة من
التعليقات ومن ثم
محاولة نشر هذا التعليق.
لذلك، سنقول تصنيف ثلاثة وبعد ذلك
سنقول اختبار التعليق، اختبار المستخدم.
دعونا نشر هذا التعليق.
عند نشر هذا التعليق،
ترى أن طبق التحديث قد عاد هنا وترى أنه داخل
هذا الطبق ترى أن التعليق الجديد قد تم تضمينه هناك.
لذلك، دعونا نسخ هذا الشيء كله.
الآن، سنحاول الحصول على هذا التعليق الخاص الذي أدخلناه للتو.
لهذا التعليق الخاص هذا هو معرف هذا التعليق.
لذلك اسمحوا لي بنسخ المعرف لهذا التعليق المحدد.
العودة إلى ساعي البريد،
اسمحوا لي أن أحاول استرداد هذا التعليق المحدد عن طريق القيام بعملية الحصول على.
هناك ترى أن هذا التعليق معين قد تم استرجاعه هنا.
الآن، إذا كنت تحاول القيام بدور على ذلك، فلن يعمل
ذلك من الواضح أنك ترى أن عملية النشر غير مسموح بها على ذلك.
دعونا نفعل عملية وضع،
على هذا التعليق معين.
لذا، إذا كنت سأضع العملية في الجسم،
فسأقول تعليق اختبار محدث.
لذلك، سأقوم بتحديث حقل التعليق من هذا التعليق.
إذا كنت تقول أن تضع على ذلك سترى أنه بالنسبة للتعليق المحدد،
فقد تم تحديث التعليق الآن ليعكس تعليق الاختبار المحدث.
لذلك، ترى أن عملية وضع في حقل التعليقات تعمل أيضا بشكل صحيح.
دعونا حذف هذا التعليق،
حتى أتمكن من حذف التعليق وبعد ذلك عندما أحذف التعليق
سترى أن هذا التعليق قد اختفى من قائمة التعليقات.
لذلك، ترى أن عملية الحذف تعمل أيضًا.
دعونا حذف جميع التعليقات.
لذلك أنا ذاهب للذهاب في وحذف جميع التعليقات.
ثم ترى أن جميع التعليقات قد تم
حذفها، وهكذا ترى أن منطقة التعليقات فارغة الآن.
لذلك، الآن يمكنك أن ترى كل منهم الحصول على، ووضع، ونشر،
وحذف العمليات على
الأطباق/أعذاء/التعليقات
والأصحان/عرض/التعليقات/CommentID،
ريست أبي نقاط النهاية كل العمل كما هو متوقع.
لذلك مع هذا نكمل هذا التمرين.
لذلك، في هذا التمرين أكملنا تنفيذ أطباق مائلة،
ونقطة النهاية REST API ودعمنا على طول الطريق حتى
يسمح لنا بالتلاعب
في طبق واحد، وجمع الأطباق،
وتعليق واحد وأيضا مجموعة من التعليقات.
هذا هو الوقت المناسب بالنسبة لك للقيام git الالتزام مع الرسالة،
التعبير عن، REST API مع الجزء الثاني من Mongoose.