محمود سعداوي2 نشر 23 سبتمبر 2023 أرسل تقرير نشر 23 سبتمبر 2023 السلام عليكم. في قاعدة البيانات mongodb قمت بإنشاء العديد من المستخدمين و كل مستخدم لديه إسم و كلمة مرور و غير ذلك. User Model const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: { type: String, required: true, unique: true, maxlength: 20 }, username: { type: String, required: true, maxlength: 20 }, password: { type: String, required: true, minLength: 6 }, about: { type: String, maxlength: 100 }, avatar: String, }) const User = mongoose.model('User', UserSchema) module.exports = { User, } عند تسجيل مستخدم جديد mongodb تقوم بإسناد معرف وحيد _id قمت بجلب جميع المستخدمين عدا المستخدم المسجل بالطريقة التالية: // Get all users except the connected user const getUsers = async(req,res) => { const userId = req.params.id try { const users = await User.find({ _id: { $ne: userId } }).select([ "name", "username", ]); res.json(users); } catch (error) { console.log(error) res.status(500).send("Server error"); } } // fetch users useEffect(()=> { const getUsers = async() => { try { const res = await axios.get(`/api/auth/allusers/${currentUser?._id}`) setUsers(res.data) } catch (error) { console.log(error.message) } } getUsers() },[currentUser?._id]) في طرف يظهر جميع المستخدمين لكن المشكل هو ظهور رسالة خطأ تشير إلى عدم التعرف _id شكرا على المساعدة 1 اقتباس
0 Adnane Kadri نشر 23 سبتمبر 2023 أرسل تقرير نشر 23 سبتمبر 2023 يشير الخطأ الذي تواجهه إلى أن id الذي تحاول استخدامه في البحث غير معرف. مما يشير إلى مشكلة إلى استقباله في الطلب أساسا، أي في استخدام req.params.id وتفتقد قيمة id في الطلب أو تكون قيمتها غير معرفة (undefined). حاول أولا التحقق مما إذا كان req.params.id معرفا أم لا قبل استخدامه: const getUsers = async (req, res) => { const userId = req.params.id; if (!userId) { return res.status(400).send("لا يوجد هنالك معرف في الطلب"); } try { const users = await User.find({ _id: { $ne: userId } }).select([ "name", "username", ]); res.json(users); } catch (error) { console.log(error); res.status(500).send("Server error"); } } اقتباس
0 محمود سعداوي2 نشر 23 سبتمبر 2023 الكاتب أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ 29 دقائق مضت قال Adnane Kadri: حاول أولا التحقق مما إذا كان req.params.id معرفا أم لا قبل استخدامه: شكرا نفس الخطأ دائما. في الكونسول تظهر error.message في الدالة التالية // fetch users useEffect(()=> { const getUsers = async() => { try { const res = await axios.get(`/api/auth/allusers/${currentUser?._id}`) setUsers(res.data) } catch (error) { console.log(error.message) } } getUsers() },[currentUser?._id]) اقتباس
0 Adnane Kadri نشر 23 سبتمبر 2023 أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ الآن قال محمود سعداوي2: شكرا نفس الخطأ دائما. في الكونسول تظهر error.message في الدالة التالية // fetch users useEffect(()=> { const getUsers = async() => { try { const res = await axios.get(`/api/auth/allusers/${currentUser?._id}`) setUsers(res.data) } catch (error) { console.log(error.message) } } getUsers() },[currentUser?._id]) حاول طباعة الرد من الخادم، هل يتم استقبال أي شيء؟ try { const res = await axios.get(`/api/auth/allusers/${currentUser?._id}`) console.log(res) // setUsers(res.data) } catch (error) { console.log(error.message) } 1 اقتباس
0 محمود سعداوي2 نشر 23 سبتمبر 2023 الكاتب أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ 2 دقائق مضت قال Adnane Kadri: حاول طباعة الرد من الخادم، هل يتم استقبال أي شيء؟ لم يحصل شيء في الكونسول حيث تمت طباعة res بنجاح 1 اقتباس
0 Adnane Kadri نشر 23 سبتمبر 2023 أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ الآن قال محمود سعداوي2: لم يحصل شيء في الكونسول حيث تمت طباعة res بنجاح يبدوا أنه لا يوجد أي مشكلة باستقبال البيانات في تطبيق العميل من على تطبيق الخادم، متى تظهر المشكلة اذن؟ اقتباس
0 محمود سعداوي2 نشر 23 سبتمبر 2023 الكاتب أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ الآن قال Adnane Kadri: يبدوا أنه لا يوجد أي مشكلة باستقبال البيانات في تطبيق العميل من على تطبيق الخادم، متى تظهر المشكلة اذن؟ رسالة الخطأ تظهر مباشرة بعد جلب المستخدمين يعني تظهر أمامي جميع المستخدمين ثم تظهر رسالة الخطأ اقتباس
0 Adnane Kadri نشر 23 سبتمبر 2023 أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ الآن قال محمود سعداوي2: رسالة الخطأ تظهر مباشرة بعد جلب المستخدمين يعني تظهر أمامي جميع المستخدمين ثم تظهر رسالة الخطأ يرجح أنه يتم ارسال الطلبية أكثر من مرة أين يفشل الطلب بعد المرة الأولى لسبب ما، حاول تمرير مصفوفة فارغة للخطاف useHook كمعامل ثان وسوف يتم ارسال الطلبية عند التصيير الابتدائي initial render فقط. لاجتناب تكرار تنفيذ الشيفرة عند كل تغير لمتغير الحالة الممرر كمعامل ثان. 1 اقتباس
0 محمود سعداوي2 نشر 23 سبتمبر 2023 الكاتب أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ 2 دقائق مضت قال Adnane Kadri: حاول تمرير مصفوفة فارغة للخطاف useHook كمعامل ثان وسوف يتم ارسال الطلبية عند التصيير الابتدائي initial render فقط. لاجتناب تكرار تنفيذ الشيفرة عند كل تغير لمتغير الحالة الممرر كمعامل ثان. في هذه فشل البرنامج في جلب المستخدمين 1 اقتباس
0 Adnane Kadri نشر 23 سبتمبر 2023 أرسل تقرير نشر 23 سبتمبر 2023 بتاريخ 3 ساعة قال محمود سعداوي2: في هذه فشل البرنامج في جلب المستخدمين احذف المعامل الثاني تماما، واكتبها بدونه. 1 اقتباس
السؤال
محمود سعداوي2
السلام عليكم.
في قاعدة البيانات mongodb قمت بإنشاء العديد من المستخدمين و كل مستخدم لديه إسم و كلمة مرور و غير ذلك.
User Model
const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: { type: String, required: true, unique: true, maxlength: 20 }, username: { type: String, required: true, maxlength: 20 }, password: { type: String, required: true, minLength: 6 }, about: { type: String, maxlength: 100 }, avatar: String, }) const User = mongoose.model('User', UserSchema) module.exports = { User, }
عند تسجيل مستخدم جديد mongodb تقوم بإسناد معرف وحيد _id
قمت بجلب جميع المستخدمين عدا المستخدم المسجل بالطريقة التالية:
// Get all users except the connected user const getUsers = async(req,res) => { const userId = req.params.id try { const users = await User.find({ _id: { $ne: userId } }).select([ "name", "username", ]); res.json(users); } catch (error) { console.log(error) res.status(500).send("Server error"); } }
// fetch users useEffect(()=> { const getUsers = async() => { try { const res = await axios.get(`/api/auth/allusers/${currentUser?._id}`) setUsers(res.data) } catch (error) { console.log(error.message) } } getUsers() },[currentUser?._id])
في طرف يظهر جميع المستخدمين لكن المشكل هو ظهور رسالة خطأ تشير إلى عدم التعرف _id
شكرا على المساعدة
9 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.