اذهب إلى المحتوى
  • 0

حذف مستخدم mongoose & react

محمد الحربي36

السؤال

عندما أقوم بحذف مستخدم موجود في قاعدة البيانات من خلال واجهة الموقع لمشروعي من المفترض أن يقوم بحذف المستخدم بالشكل الصحيح وينقلني النظام لصفحة تسجيل الدخول كما هو مطلوب منه ولكن في نفس الوقت يظهر لي خطأ يقول cannot read property of null (reading '_id') 

كما في الصورة المرفقة

المشروع بـ MERN 

دالة حذف مستخدم في ملف EditProfile.jsx

const handleDelete = async () => {
    const deleteProfile = await axios.delete(`/users/${currentUser._id}`);
    dispatch(logout());
    navigate("/signin");
  }

دالة حذف مستخدم في ملف الباك إند

export const deleteUser = async (req, res, next) => {
        if(req.params.id === req.user.id){
            try {
                await User.findByIdAndDelete(req.params.id);
                await Post.deleteMany({ userId: req.params.id });
                res.status(200).json("User Deleted!");
            } catch (err) {
                next(err)
            }
        } else {
            return next(handleError(403, "You can update only your account!"));
        }
}

ملاحظة

عندما أقوم بتسجيل مستخدم جديد ينقلني النظام للصفحة الرئيسية كما هو مطلوب منه ولكن عندما أحاول حذف المستخدم بعدها مباشرة يظهر لي خطأ يقول (You can update only your account!) (النص الموجود في دالة حذف مستخدم في ملف الباك إند) ولا يتم حذف المستخدم حتى أقوم بتسجيل الخروج ثم أقوم بتسجيل الدخول بنفسي ثم إذا قمت بحذف المستخدم تظهر لي المشكلة المذكورة أعلاه

cannot read property of null.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

أظن أن المشكلة التي تحدث هي على مستوى العميل وليس على مستوى الخادم، لأن ما يحدث على مستوى الخادم منطقي وشيء عادي، ومتى ما تلقى الخادم معرفا صحيحا فهو سيقوم بحذف المستخدم وفق الشروط المقدمة. كما أن الخطأ يظهر على مستوى المتصفح، مما يعني أن الخادم لا دخل فيه. 

الخطأ يشير تحديد إلى مشكلة بقراءة الخاصية id_ من currentUser، والتي يبدوا أن هنالك مشكلة بتصريحها بداخل مكون رياكت. 

ابحث عن الأسطر الخاصة بها وانظر ما ان كنت تقوم بتصريحها على وجه صحيح. 

أيضا تأكد من ما ان كانت القيمة مساوية لـ null :

const handleDelete = async () => {
    console.log(currentUser)
    /*const deleteProfile = await axios.delete(`/users/${currentUser._id}`);
    dispatch(logout());
    navigate("/signin");*/
  }

في حال ما كان ذلك، أعد النظر في طريقة تصريحك لـ currentUser

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...