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

السؤال

نشر

عندما أقوم بحذف مستخدم موجود في قاعدة البيانات من خلال واجهة الموقع لمشروعي من المفترض أن يقوم بحذف المستخدم بالشكل الصحيح وينقلني النظام لصفحة تسجيل الدخول كما هو مطلوب منه ولكن في نفس الوقت يظهر لي خطأ يقول 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...