Ahmed Malek نشر 25 مايو أرسل تقرير نشر 25 مايو أعمل على موقع تجارة الكترونى واحتاج الى المساعدة لا احد يساعدنى غيركم الموقع لا يستجيب عند اتمام الشراء يطلب منى عنوان رغم انى اضفت عنوان ومتأكد ان الكود صحيح وخانة التعليقات والتقيمات للمنتح لا تعمل اريد حل هذه الاخطاء مع الشرح لو سمحتم وفحص لكامل الاخطاء الاخرى وتوضيحها مع الشرح شكرا لكم مقدماclickBuy project.rar 1 اقتباس
0 محمد عاطف17 نشر 26 مايو أرسل تقرير نشر 26 مايو مرحبا أحمد . يجب أن تتعلم كيفية تتبع الأخطاء حتى يكون مستواك متقدما وتستطيع إكتشاف الأخطاء بمفردك . والآن لنكتشف الأخطاء معا : اولا إن الطلب لا يتم عند إتمام الشراء حيث يخبرك أنه مطلوب عنوان وأنت بالفعل إخترت العنوان . ولاحظ أنك عند إختيار العنوان تتاكد أولا منه فى قاعدة البيانات . حيث حينما تقوم بإختيار عنوان يتم إرسال طلب إلى الخادم . والآ لنقم بفتح تبويبة network فى ادوات المطورين لنكتشف الخطأ ستجد أن الخطأ الذى يظهر لك هو أن المسار غير معرف . ستجد أنك لم تقم بتعريف ال Route الذى يقوم بإرجاع العنوان بال id فى الخادم . لذلك لنقم بإنشاءه . في ملف back-end\services\addressService.js لنقم بإنشاء الدالة التى تقوم بإرجاع العنوان بناء على ال id كالتالي : exports.getAddresse = asyncHandler(async (req, res, next) => { const user = await User.findById(req.user._id).populate('addresses'); let address=[]; user.addresses.forEach(element => { if(element._id == req.params.addressId) return address.push(element); }); res.status(200).json({ status: 'success', results: address.length, data: address, }); }); و الآن في ملف back-end\routes\addressRoute.js لنقم بتعريف مسار جديد وتمرير الدالة السابقة له هكذا .: const express = require('express'); const authService = require('../services/authService'); const { addAddress, removeAddress, getLoggedUserAddresses, getAddresse } = require('../services/addressService'); const router = express.Router(); router.use(authService.protect, authService.allowedTo('user')); router.route('/').post(addAddress).get(getLoggedUserAddresses); router.get('/:addressId',getAddresse); router.delete('/:addressId', removeAddress); module.exports = router; وهكذا تم حل أول مشكلة و ستجد أنك تستطيع الآن ان تتم عملية الشراء . نأتى للخطأ الثانى وهو عدم اضافة التعليق والتقيم : لنقم بفتح خانة Network كما في السابق وعند إرسال الطلب الخاص بإضافة التعليق ستجد رسالة الخطأ تخبرك ان ratings لم يتم إرسالها و هى مطلوبة وإذا نظرنا إلى ما تقوم بإرساله ستجد أنك تقوم بإرسال rating بدلا من ratings لهذا هو يعتبر أنك لم تقم بإرسال أى تقيم وحل تلك المشكلة في ملف front-end\src\hook\review\add-rate-hook.js سطر رقم 38 قم فقط بإضافة حرف s هكذا : ratings: rateValue والآن سيعمل معك بشكل جيد وتستطيع إضافة أى تقيم . وقد قمت بإرفاق الملفات السابقى بعد التعديل . addressRoute.js addressService.js اقتباس
0 Ahmed Malek نشر 26 مايو الكاتب أرسل تقرير نشر 26 مايو بتاريخ 33 دقائق مضت قال محمد_عاطف: مرحبا أحمد . يجب أن تتعلم كيفية تتبع الأخطاء حتى يكون مستواك متقدما وتستطيع إكتشاف الأخطاء بمفردك . والآن لنكتشف الأخطاء معا : اولا إن الطلب لا يتم عند إتمام الشراء حيث يخبرك أنه مطلوب عنوان وأنت بالفعل إخترت العنوان . ولاحظ أنك عند إختيار العنوان تتاكد أولا منه فى قاعدة البيانات . حيث حينما تقوم بإختيار عنوان يتم إرسال طلب إلى الخادم . والآ لنقم بفتح تبويبة network فى ادوات المطورين لنكتشف الخطأ ستجد أن الخطأ الذى يظهر لك هو أن المسار غير معرف . ستجد أنك لم تقم بتعريف ال Route الذى يقوم بإرجاع العنوان بال id فى الخادم . لذلك لنقم بإنشاءه . في ملف back-end\services\addressService.js لنقم بإنشاء الدالة التى تقوم بإرجاع العنوان بناء على ال id كالتالي : exports.getAddresse = asyncHandler(async (req, res, next) => { const user = await User.findById(req.user._id).populate('addresses'); let address=[]; user.addresses.forEach(element => { if(element._id == req.params.addressId) return address.push(element); }); res.status(200).json({ status: 'success', results: address.length, data: address, }); }); و الآن في ملف back-end\routes\addressRoute.js لنقم بتعريف مسار جديد وتمرير الدالة السابقة له هكذا .: const express = require('express'); const authService = require('../services/authService'); const { addAddress, removeAddress, getLoggedUserAddresses, getAddresse } = require('../services/addressService'); const router = express.Router(); router.use(authService.protect, authService.allowedTo('user')); router.route('/').post(addAddress).get(getLoggedUserAddresses); router.get('/:addressId',getAddresse); router.delete('/:addressId', removeAddress); module.exports = router; وهكذا تم حل أول مشكلة و ستجد أنك تستطيع الآن ان تتم عملية الشراء . نأتى للخطأ الثانى وهو عدم اضافة التعليق والتقيم : لنقم بفتح خانة Network كما في السابق وعند إرسال الطلب الخاص بإضافة التعليق ستجد رسالة الخطأ تخبرك ان ratings لم يتم إرسالها و هى مطلوبة وإذا نظرنا إلى ما تقوم بإرساله ستجد أنك تقوم بإرسال rating بدلا من ratings لهذا هو يعتبر أنك لم تقم بإرسال أى تقيم وحل تلك المشكلة في ملف front-end\src\hook\review\add-rate-hook.js سطر رقم 38 قم فقط بإضافة حرف s هكذا : ratings: rateValue والآن سيعمل معك بشكل جيد وتستطيع إضافة أى تقيم . وقد قمت بإرفاق الملفات السابقى بعد التعديل . addressRoute.js 490 B · 0 تنزيلات addressService.js 1.89 kB · 0 تنزيلات شكرا لك تم حل المشكلة ولكنى عندى سؤال اخر لو تكرمت ظهرت مشكلة اخرى عن اضافة عنوان جديد والضغط هنا يحولنى لصفحة بيضاء وهنا الخطأ فى inspect انا لا افهمة صرحة 1 اقتباس
0 Mustafa Suleiman نشر 26 مايو أرسل تقرير نشر 26 مايو بتاريخ 1 دقيقة مضت قال Ahmed Malek: شكرا لك تم حل المشكلة ولكنى عندى سؤال اخر لو تكرمت ظهرت مشكلة اخرى عن اضافة عنوان جديد والضغط هنا يحولنى لصفحة بيضاء وهنا الخطأ فى inspect انا لا افهمة صرحة لا يتم إعادة مصفوفة في خاصية data، قم بطباعة data وتفقد ما الذي يتم إعادته، فأنت حاليًا تحاول استخدام ميثود map على مصفوفة لكن data ليست مصفوفة، لذا map غير متاحة. اقتباس
0 Ahmed Malek نشر 26 مايو الكاتب أرسل تقرير نشر 26 مايو بتاريخ 2 دقائق مضت قال Mustafa Suleiman: لا يتم إعادة مصفوفة في خاصية data، قم بطباعة data وتفقد ما الذي يتم إعادته، فأنت حاليًا تحاول استخدام ميثود map على مصفوفة لكن data ليست مصفوفة، لذا map غير متاحة. هل من الممكن ان توضح اكثر بالكود لو سمحت؟ اقتباس
0 Mustafa Suleiman نشر 1 يونيو أرسل تقرير نشر 1 يونيو بتاريخ On 26/5/2024 at 22:06 قال Ahmed Malek: هل من الممكن ان توضح اكثر بالكود لو سمحت؟ هل تم حل المشكلة؟ للتوضيح: const data = fetchDataFromServer(); console.log(data); // قم بطباعة data وتفقد ما الذي يتم إعادته const result = data.map(item => item.value); // هنا قد تواجه مشكلة إذا لم تكن data مصفوفة console.log(result); اقتباس
السؤال
Ahmed Malek
أعمل على موقع تجارة الكترونى واحتاج الى المساعدة لا احد يساعدنى غيركم
الموقع لا يستجيب عند اتمام الشراء يطلب منى عنوان رغم انى اضفت عنوان ومتأكد ان الكود صحيح
وخانة التعليقات والتقيمات للمنتح لا تعمل
اريد حل هذه الاخطاء مع الشرح لو سمحتم وفحص لكامل الاخطاء الاخرى وتوضيحها مع الشرح شكرا لكم مقدماclickBuy project.rar
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.