حان الوقت للبدء في الرابع والتكليف النهائي لهذه الدورة.
لقد صممت هذه المهمة لتكون توحيد
لكل ما تعلمته في هذه الدورة.
لذلك سوف يتضمن هذا التعيين التوجيه باستخدام جهاز التوجيه السريع.
وسوف تنطوي على تصميم المخططات في النموذج،
لدينا MongoDB و Mongoose،
وبعد ذلك أيضا سوف ننظر لفترة وجيزة في مصادقة المستخدم.
ماذا نفعل بالضبط في هذه المهمة؟
ويستند هذا الواجب حول قدرة المستخدم على
حفظ واسترداد قائمة من الأطباق كما الأطباق المفضلة لديهم على جانب الخادم.
إذا كنت قد أخذت الدورات السابقة لهذا التخصص،
وتحديدا دورات تطوير تطبيقات الجوال الهجين،
سواء كان أيوني أو النص الأصلي،
كنت قد رأيت أن لدينا تصميم التطبيقات لتكون قادرة على السماح للمستخدم
لحفظ الأطباق في قائمة المفضلة لديهم الأطباق
وأيضا استرداد الأطباق من تلك القائمة من الأطباق المفضلة لديهم.
عندما نفذنا ذلك في الدورات السابقة،
قمنا بتنفيذ ذلك باستخدام التخزين المحلي على جهاز معين.
في هذا الواجب، عليك توسيع
جانب الخادم لتكون قادرة على دعم ذلك بالضبط.
وبهذه الطريقة، يمكن للمستخدم حفظ قائمة الأطباق المفضلة لديهم
على جانب الخادم والوصول إلى هذه القائمة من
أي جهاز الذي سيتم تسجيل الدخول إلى خادمهم.
ما يعنيه هذا هو أننا بحاجة إلى تصميم مسار جديد لخادمنا،
والذي سوف نسميه كمسار/المفضلة.
على هذا الطريق، سيكون لدينا لتصميم جهاز التوجيه السريع لدعم الحصول على،
وظيفة وحذف العمليات على هذا الطريق
وأيضا تصميم مخطط لتخزين الأطباق المفضلة
ونموذج النمس المقابلة
وربط الاثنين معا بحيث يمكن حفظ المعلومات و استردادها من MongoDB.
وسوف نستخدم أيضا السكان النمس من أجل رسم في المعلومات من
نموذج المستخدم ومن نموذج الأطباق عندما نضع
معا تلك القائمة من الأطباق المفضلة لمستخدمنا.
لن
تحتوي معلومات الأطباق المفضلة التي تخزنها في الواقع على معلومات المستخدم أو معلومات الطبق.
بدلا من ذلك، فإنه سوف تحتوي على مؤشرات إلى وثائق وثيقة طبق
ومستند المستخدم وبعد ذلك سنقوم بنشر هذه المعلومات
عندما نقوم بإرسال هذه المعلومات ردا على طلب الحصول على.
دعونا ننظر في كيفية تنفيذ
هذه المهمة النهائية وأيضا المهام المختلفة في هذه المهمة النهائية.
لمساعدتك على فهم ما هو مطلوب في
المهمة النهائية أو ما سوف تقوم بتنفيذه في المهمة النهائية،
اسمحوا لي أن أوضح ما يتوقع من الخادم الخاص بك القيام به في نهاية هذه المهمة،
وبعد ذلك سوف قائمة المهام الثلاث التي تحتاج إلى القيام بها في هذا المهمة.
للبدء، نحن بحاجة إلى مجموعة من الأطباق بالفعل
على جانب الخادم بحيث يمكن للمستخدم وضع علامة على بعضها كأطباق المفضلة لديهم.
لقد ذهبت إلى الأمام وأضاف في أربعة أطباق إلى قائمتي من الأطباق على جانب الخادم.
أنت تعرف بالفعل كيفية القيام بذلك.
يجب عليك تسجيل الدخول كمشرف ثم نشر
معلومات الطبق هذه إلى جانب الخادم واحدًا تلو الآخر.
لتمكينك من الحصول على المعلومات لكل من هذه الأطباق،
لقد قدمت لك بالفعل ملف db.json الذي يحتوي
على مستندات JSON المقابلة لكل من هذه الأطباق في موارد التعيين.
يمكنك فتح ذلك، وقطع ولصق المعلومات من هناك ومن ثم
إنشاء قائمة من الأطباق على جانب الخادم الخاص بك.
هنا، سترى أنني قمت بالفعل بإجراء عملية الحصول على
المضيف المحلي: 3000/أطباق ثم
ترى أنني قد حصلت بالفعل على قائمة الأطباق هنا.
ما هو مهم بالنسبة لنا أن نلاحظ أن كل طبق سيكون له معرف الطبق الخاص به هنا.
عندما تحتاج إلى وضع علامة على أي طبق كما المفضلة
لديك، تحتاج إلى الوصول إلى معرف الطبق لكل من هذه الأطباق.
يمكنك نسخ هذه الأطباق الأربعة ومن ثم حفظها بحيث عند
تنفيذ العمليات لإضافة هذه الأطباق إلى قائمة الأطباق،
ثم سوف تكون قادرة على استخدام هذا معرف الطبق.
لذلك أنا ذاهب لنسخ هذه الأرقام أربعة أطباق ومن ثم
حفظها في وثيقة نصية حتى أتمكن من الاستفادة منها.
قبل أن أتمكن من إضافة أطباق إلى قائمة أطباقي،
من الواضح أنني بحاجة إلى تسجيل الدخول كمستخدم.
اسمحوا لي أن المضي قدما وتسجيل الدخول كواحد من المستخدمين.
للقيام بذلك، اسمحوا لي أن تفعل وظيفة على المضيف المحلي: 3000/المستخدمين/تسجيل الدخول.
وفي نص الرسالة،
اسمحوا لي أن اكتب في أحد المستخدمين المسجلين.
لا أريد تسجيل الدخول كمسؤول ولكن كأحد المستخدمين العاديين الآخرين.
لذلك اسمحوا لي أن أفعل هذا المنصب على https://localhost:3443.
الآن كل هذه العمليات،
من الأفضل القيام بذلك على نقطة نهاية HTTPS بدلاً من نقطة نهاية HTTP.
سنقوم بنشر نقطة النهاية هذه وتسجيل الدخول إلى خدمتنا،
وردًا على ذلك، يجب أن تكون قادرًا على الحصول على رمز ويب JSON.
لذلك دعونا نجعل نسخة من رمز ويب JSON هذا لأننا سنحتاج إلى هذا
من أجل تنفيذ أي من العمليات لإضافة أطباق إلى قائمة المفضلة لدينا.
اسمحوا لي بنسخ هذا الرمز المميز وحفظه في المستند النصي الخاص بي.
الآن، كيف يمكنني إضافة طبق إلى قائمتي المفضلة؟
للقيام بذلك، الخطوة الأولى هي أن علينا
الوصول إلى نقطة النهاية /المفضلة.
إذا كنت ترغب في إضافة طبق معين إلى قائمة المفضلة،
فإننا نقول/المفضلة ثم نضيف معرف الطبق في عنوان URL هنا.
اسمحوا لي أن لصق في معرف الطبق الذي أريد أن أضيف إلى قائمتي المفضلة.
هنا، لقد لصق في معرف الطبق الخاص بي إلى قائمة المفضلة.
لن يحتوي نص رسالة المضيف هذه على أي شيء لأن كل ما أحتاجه موجود بالفعل في عنوان URL.
وبالنسبة للرأس،
أحتاج إلى إعداد رأس التفويض،
وفي رأس التفويض،
أحتاج إلى الرمز المميز.
لذا دعني أنسخ الرمز المميز هنا ثم في رأس التفويض،
دعنا نقول حامل، ولصقه في رأس التفويض.
يمكنك أيضًا القيام بنفس الشيء للحصول على الرمز المميز.
يمكنك أيضًا إجراء تسجيل الدخول من خلال Facebook ثم الحصول على رمز ويب JSON.
لقد أوضحت الحصول على رمز ويب JSON باستخدام
المصادقة المحلية القياسية باستخدام اسم المستخدم وكلمة المرور،
ولكن لا يهم الطريقة التي حصلت بها على رمز ويب JSON.
طالما لديك رمز ويب JSON،
يجب أن تكون قادرًا على تنفيذ جميع هذه العمليات.
اسمحوا لي أن تنفيذ عملية ما بعد على نقطة النهاية هذه وتذكر أن هذا
هو معرف الطبق للطبق المحدد الذي أريد إضافته إلى قائمتي المفضلة.
عندما أقوم بالنشر إلى قائمة المفضلة،
سترى أن الخادم الخاص بي سيرد مرة أخرى مع هذا المستند هنا في نص الرد.
الآن، دعونا نفحص هذا المستند لمعرفة ما يحتوي عليه بالضبط.
يحتوي هذا المستند، كما ترى، على معرف،
ولكن من الواضح أن هذا مستند JSON،
بالإضافة إلى أنه يحتوي على
حقل هنا يسمى المستخدم.
الآن ماذا يخزن حقل المستخدم هذا؟
حقل المستخدم هذا هو معرف الكائن للمستخدم
المقابلة لمن هذه القائمة الخاصة من المفضلة.
وانظر الى الصحون
الأطباق عبارة عن مجموعة وهي عبارة عن مجموعة من معرفات الأطباق.
وفي هذه الحالة، أضفت الطبق الأول إلى قائمتي المفضلة.
لذلك، لهذا السبب لدي طبق واحد فقط في مجموعة من الأطباق في قائمتي المفضلة.
لذلك، يجب أن يوحي هذا على الفور لك كيفية تصميم المخطط للمفضلات الخاصة بك.
لذلك، تحتوي الأطباق على معرفات الكائن لكل من الأطباق،
ويحتوي المستخدم على معرف الكائن المقابل للمستخدم.
لقد رأيت بالفعل كيف يمكنني استخدام
المعلومات للقيام السكان من المعلومات عندما أفعل عملية الحصول على.
وقد فعلنا ذلك بتعليقات بالفعل.
لذلك، يجب أن تعطيك تلميحا كبيرا حول كيفية تصميم المخطط الذي يحتوي
على المستخدم ومجموعة من الأطباق في قائمتي من الأطباق هنا.
الآن، لقد فعلنا هذا المنصب على هذا.
دعونا الحصول على قائمة المفضلة.
لذلك للحصول على قائمة المفضلة،
أحتاج إلى إجراء عملية الحصول على.
الآن، بالنسبة لعملية الحصول على،
من الواضح أنني بحاجة أيضًا
إلى معلومات التفويض هنا لأنك تريد أن يتمكن المستخدم من استرداد قائمة المفضلة الخاصة به فقط،
ولا يمكن لأي مستخدم آخر استرداد قائمة المفضلة لمستخدم مختلف.
لذلك، هذا مهم جدا.
لذلك، هذا يوحي لك أنك تحتاج
إلى التحقق من صحة المستخدم حتى لعملية الحصول على.
الآن، كيف يمكن لعملية ما بعد العملية
تلقائيا الحصول على معرف الكائن هذا المقابلة للمستخدم؟
تذكر أنه عند تضمين رأس التخويل هنا،
من رأس التفويض،
بالطريقة التي تقوم بها بتفويض المستخدم، قم
بتوجيه خصائص المستخدم التي تم تحميلها بالفعل على كائن الطلب.
وهذا هو المكان الذي ستحصل فيه على الوصول إلى معرف كائن المستخدم.
لذلك، تلميح آخر حول كيفية ملء هذه المعلومات.
لذلك، هذا هو السبب في ملاحظة أنه عندما قمت بإجراء المشاركة،
لم أقم بتحديد المستخدم لأنه
يجب أن يتم
اشتقاق معلومات المستخدم تلقائيًا من ما قدمناه هنا في رأس التفويض.
لذلك، تلميح آخر حول كيفية تنفيذ هذا.
لذلك، وهذا هو السبب في أنني قلت هذه المهمة هو توحيد
لجميع المواضيع التي قمت باستكشافها في هذه الدورة.
الآن، أنا لا تدعم عملية الحصول على معرف طبق معين.
لا معنى لدعم ذلك على المفضلة،
في معرف طبق معين.
بدلا من ذلك، يمكننا إجراء عملية الحصول على المضيف المحلي 3443/المفضلة.
ثم نقوم بإجراء عملية الحصول على.
ستلاحظ على الفور أن المستند الذي يتم إرجاعه إليك يحتوي
على معلومات المستخدم التي تم ملؤها بالفعل بواسطة عملية get هنا.
لذلك، معلومات المستخدم.
لذلك بدلا من معرف المستخدم هناك،
معلومات المستخدم موجودة بالفعل هناك.
ويتم ذلك من خلال سكان مونغو.
لذلك، هذا هو تلميح كبير آخر حول كيفية تنفيذ عملية الحصول على.
ليس فقط يتم ملء معلومات المستخدم في.
الآن لماذا أريد أن يتم ملء معلومات المستخدم في؟
لأن ذلك قد يكون مفيدًا عندما أقوم بعرض المعلومات.
قد لا يكون هذا ضروريًا،
لكنني أفعل ذلك فقط من أجل الاكتمال
لأنه إذا كنت تسترد قائمة المفضلة لمستخدم معين،
فأنت تعرف تلقائيًا من هو المستخدم،
ويقوم هذا المستخدم بتسجيل الدخول على أي حال.
ولكن في حال كنت تريد معلومات المستخدم،
يمكنك تنفيذ هذه العملية للحصول على معلومات هذا المستخدم.
لذلك، فقط لتوضيح لك أن سكان مونغو يمكن استخدامها،
لقد أوضحت ليس فقط أنه في قائمة الأطباق هنا،
يتم ملء المعلومات حول كل طبق بالفعل في هذه الصفيف.
لذلك، إذا كان لديك مجموعة من الأطباق،
يجب ملء معلومات كل من هذه الأطباق في هذه الصفيف.
لذا، هذا هو استخدام سكاني آخر لـ Mongo
الذي ترونه لملء معلومات الأطباق.
فقط من خلال الطريقة التي قمت بإعداد مخطط المفضلة لديك،
وهذا يجب أن يكون ممكنا تلقائيا بالنسبة لك باستخدام
فقط نقطة ملء على قائمة الأطباق هنا.
لذلك، هذا الجزء الثاني.
الآن بعد أن تمكنا من استرداد طريقة الحصول على الأطباق،
اسمحوا لي أن تظهر لكم كيف يمكنك إجراء عملية ما بعد العملية حيث يمكنك
إضافة مجموعة من الأطباق إلى قائمة المفضلة لديك.
الآن، والعودة إلى هذا المنصب،
إذا كنت بحاجة إلى إضافة ليس فقط واحد ولكن مجموعة من الأطباق إلى قائمة المفضلة لديك،
والآن لماذا تريد هذا؟
ربما على جانب العميل قد يكون لديك زر والتي عند
النقر عليها سوف تسمح لك للتحقق من علامة مجموعة من الأطباق من قائمة الأطباق،
ومن ثم إضافتها في لقطة واحدة في قائمة المفضلة لديك.
لذلك، لدعم هذا النوع من العملية،
قد ترغب في السماح بوظيفة ليتم تنفيذها على المفضلة شرطة مائلة هنا.
الآن، عندما يتم تنفيذ المشاركة على المفضلة للشرطة المائلة، مرة أخرى،
ستظل بحاجة إلى رأس التفويض.
ولكن في نص الرسالة،
سنقوم بتخزين قائمة الأطباق كمجموعة من هذا الشكل.
لذا، هذا مستند JSON هنا،
لذا دعني أتأكد من أنه في رأسي،
يكون نوع المحتوى موجودًا بالفعل هناك.
الآن، هذه الوثيقة سوف
تحتوي على مجموعة من الأطباق مثل هذه.
لذلك، سيتم تحديد كل طبق من خلال
قول تسطير القولون ID،
وبعد ذلك هنا سيكون لديهم معرف الطبق،
وهكذا هذا لن يكون سوى مجموعة من الأطباق.
لذلك، اسمحوا لي أن أضيف طبقين إلى قائمتي المفضلة هنا فقط لتوضيح هذه النقطة.
لذلك، اسمحوا لي أن لصق في بطاقات الهوية من اثنين من الأطباق في هذا.
لذلك، عند إجراء وظيفة على المضيف المحلي 3443/المفضلة،
هذه هي الطريقة التي تؤلف بها نص رسالة النشر هنا.
لذلك، سيتم تضمين كل طبق تريد إضافته في هذا التنسيق هنا.
الآن، عندما تقوم بتضمينها في هذا التنسيق،
ثم نشرها إلى جانب
الخادم هذا، سيقوم الخادم في المقابل بإرسال قائمة محدثة من المفضلة لك.
لذلك، عندما تتلقى قائمة محدثة من المفضلة من جانب الخادم،
سترى أن معلومات المستخدم موجودة بالفعل،
ولكن لاحظ كيف يتم تخزين الأطباق المفضلة في هذه المجموعة من معرفات كائن الطبق.
لذلك، أول واحد كنا قد أضفنا بالفعل في العملية السابقة.
وبالتالي فإن اثنين المتبقية،
أضفنا للتو إلى قائمة المفضلة لدينا.
لذلك، يتم إضافة هذه معرفات الكائن اثنين أيضا
في مجموعة الأطباق بلدي في وثيقة المفضلة هنا.
لذا، هناك تَذْهبُ. لذلك، هذه هي الطريقة التي من المفترض
أن تؤدي وظيفة المفضلة على نقطة النهاية مثل هذا.
الآن، دعونا مرة أخرى إجراء عملية الحصول
على المفضلة فقط لمعرفة ما هي الميزات العملية الحصول بالنسبة لنا.
لذلك عندما نقوم بإجراء عملية GET،
ستلاحظ على الفور أنه في وثيقة المفضلة العودة،
لديك معلومات المستخدم هناك،
ثم أسفل هنا،
والأطباق ليست سوى مجموعة من وثائق Json هنا،
كل واحد المقابلة للطبق.
الآن يتم الاعتناء بهذا تلقائيًا من خلال
ملء النمس الذي قمنا به على جانب الخادم.
لذلك يجب ملء جميع هذه المعلومات تلقائيًا على جانب الخادم.
لذلك هذه هي الطريقة التي تعمل بها عمليات النشر الخاصة بك على نقطتي النهاية.
الآن اسمحوا لي أن تظهر لك كيفية تنفيذ عملية DELETE.
الآن لحذف طبق معين.
لذلك اسمحوا لي بإجراء عملية حذف على نقطة نهاية محددة.
لذا سنعود إلى نقطة النهاية هذه،
ثم اسمحوا لي فقط نسخ واحدة من هذه،
وبعد ذلك سأحذف أحد الأطباق.
لذلك لتنفيذ عملية الحذف على أحد الأطباق،
بالطبع كما ترون،
نحن لسنا بحاجة إلى الجسم حتى الآن،
ونحن لسنا بحاجة إلى المحتوى هنا.
كل ما نحتاج إلى القيام به هو إجراء عملية حذف على نقطة النهاية هذه.
حتى هنا ترى أن أفعل لوكالهوست: 3443/المفضلة/ثم معرف الطبق.
ثم اسمحوا لي أن نشر هذا.
لذلك عندما أحذف طبق معين من قائمتي المفضلة،
لاحظت على الفور أن
قائمتي المحدثة من المفضلة يتم إرسالها مرة أخرى إلى جانب العميل من قبل الخادم.
لذلك لديك المستخدم هنا،
ولكن لاحظ أنه في مجموعة الأطباق لدي فقط اثنين من الأطباق الآن.
تلك التي قمت بحذفها للتو ذهبت من قائمة الأطباق تلك
لذلك إذا قمت بإجراء GET الآن،
سوف مجموعة الأطباق الخاصة بك باستمرار إلى الأطباق هناك.
الآن، لنفترض أنني أقوم بإجراء DELETE على المفضلة هنا.
حتى إذا قمت بإجراء DELETE على نقطة النهاية المفضلة نفسها مباشرة،
ثم ما هو عليه القيام به هو حذف جميع المفضلة
بلدي وأيضا حذف وثيقة المفضلة بلدي تماما من جانب الخادم.
لذلك اسمحوا لي أن تنفيذ عملية الحذف هذه على جانب الخادم،
وبعد ذلك سوف يعود حقيقة أنه حذف هذا المستند معين،
لذلك فقط إرجاع هذا المستند على أي حال.
ولكن الآن إذا قمت بإجراء عملية GET على قائمتي المفضلة،
فسوف أقوم باسترداد قيمة خالية هناك.
وهذا يعني أنه ليس لدي هذا المستند على جانب الخادم.
لذلك ذهب المستند المفضل تماما،
عندما أقوم بإجراء عملية DELETE على عمود المضيف المحلي ثلاثة من المفضلة سابقا شرطة مائلة.
الآن مرة أخرى، عندما أضيف طبق جديد إلى
قائمتي المفضلة، سيتم إعداد وثيقة المفضلة في كل مرة أخرى.
هذا جيد تماما بالنسبة لنا للعمل مع.
لذلك مع هذا العرض لقد أظهرت لك
جميع العمليات المختلفة التي تحتاج إلى القيام بها على جانب الخادم الخاص بك.
جميع العمليات المختلفة على نقاط نهاية المسار المختلفة
التي تحتاج إلى تنفيذ أو تنفيذ على جانب الخادم.
الآن بعد أن رأيت
جميع العمليات المختلفة التي يجب أن يدعمها جانب الخادم على الخط المائل المفضلة،
ومفضلة الخط
المائل، ونقاط نهاية معرف طبق مائل،
اسمحوا لي أن قائمة المهام الثلاث التي تحتاج إلى إكمال في هذه المهمة.
المهمة الأولى بالطبع هي تنفيذ المخطط المفضل والنموذج.
هذا سوف تنفذ في مجلد النماذج في ملف يسمى NodeJS المفضلة.
هناك سوف تنفذ المخطط المفضل.
تذكر أن المخطط المفضل سيخزن
المرجع إلى معرف كائن المستند الخاص بالمستخدم،
ومجموعة من معرفات كائن مستند الأطباق.
هذا هو تلميح كبير حول كيف من المفترض
أن تصمم المخطط ونموذج المفضلة لديك.
المهمة الثانية في مهمتك هي تنفيذ
عمليات GET و POST و DELETE على نقطة النهاية المفضلة للشرطة المائلة.
ستحصل GET على قائمة المفضلة، التي يتم
ملؤها تلقائيًا بواسطة تعبئة Mongo،
يجب أن يحتوي POST على قائمة بالأطباق كما هو محدد
في الشكل الذي أظهرته لك للتو في نص رسالة POST.
وهكذا سيتم إضافة مجموعة من الأطباق إلى قائمتك المفضلة،
وعملية DELETE على نقطة النهاية المفضلة للخط المائل سوف
تحذف وثيقة المفضلة لديك تماما من جانب الخادم.
الآن إذا قمت بإجراء عملية POST على شرطة مائلة المفضلة معرف
طبق، فسيتم إضافة طبق معين إلى قائمة المفضلة لديك.
إذا لم يكن المستند المفضل لديك موجودًا،
فمن الواضح أنك تحتاج إلى إنشاء هذا المستند المفضل.
لذلك هذا هو أيضا جزء من عملية POST.
حتى إذا وجدت في أي نقطة أن المستند المفضل غير موجود،
تحتاج إلى أولا إنشاء المستند المفضل
ثم إضافة هذا الطبق إلى المستند المفضل.
لذا هذه نقطة مهمة يجب ملاحظتها أيضًا.
عند إجراء POST على نقطة النهاية المفضلة للخط المائل،
إذا لم يكن المستند المفضل موجودًا،
فستحتاج إلى إنشاء مستند مفضل ثم إضافة الأطباق إلى المستند المفضل لديك.
إذا كان موجودًا بالفعل،
فإنك تقوم فقط بتحديث هذا المستند المفضل.
لذلك هذا هو تلميح آخر حول كيفية تنفيذ عمليات POST.
إذا قمت بإجراء عملية DELETE على الخط المائل المفضلة معرف طبق،
ثم سيتم حذف هذا الطبق المحدد من قائمة المفضلة.
الآن في تنفيذ عمليات POST و DELETE،
يجب عليك التأكد من أنك لن تضيف مكررة إلى معرف الطبق.
لذلك قبل إضافة معرف كائن الطبق إلى قائمة الأطباق،
تحقق دائمًا للتأكد من وجود معرف الطبق بالفعل في قائمة الأطباق.
الآن هذا هو المكان الذي يمكنك فيه استخدام أسلوب مصفوفة indexOf للتحقق لمعرفة ما
إذا كان معرف المستند موجودًا بالفعل في صفيف من المستندات.
لذلك هذا تلميح كبير آخر حول كيفية تنفيذ هذا الجزء.
والمهمة الثالثة بالطبع هو تحميل
جهاز التوجيه المفضل على نقاط النهاية المفضلة شرطة مائلة عن طريق تحديث ملف app.js.
سيتم تنفيذ جهاز التوجيه المفضل نفسه
في مجلد المسارات في ملف favoriterouter.js.
حتى مع هذا لقد وصفت ما كنت
من المفترض أن تنفذ في المهمة الرابعة والنهائية.
وآمل أن تساعدك هذه المهمة
على دمج كل ما تعلمته في الدورة، على
طول الطريق من تصميم جهاز التوجيه السريع،
إلى القيام MongoDB وكذلك مخطط Mongo ونماذج،
وكذلك إجراء مصادقة المستخدم المناسبة.
وكما ذكرت مرة أخرى،
لن يتمكن سوى مستخدم مصادق عليه من الوصول إلى قائمته المفضلة.
حتى عملية GET لا يمكن إلا أن يؤديها
مستخدم مصادق عليه على نقطة النهاية المفضلة شرطة مائلة.
وسوف تجلب فقط المفضلة لهذا المستخدم معين.
لا يمكنك السماح لمستخدم آخر بالوصول إلى المفضلة لمستخدم آخر.
مرة أخرى، يخبرك ذلك أيضًا كيف من المفترض إجراء
المصادقة على نقاط نهاية المسار المختلفة.
مع هذا أكمل وصف المهام في المهمة الرابعة.
استمتعي بإكمال هذه المهمة.