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

حذف صورة من قاعدة البيانات mongo db

محمود سعداوي2

السؤال

السلام عليكم.

لحذف صورة من قاعدة البيانات قمت بالكود التالي

Router

router.delete("/user_images/:photoId", protect, removeImg);

Controller

const removeImg = async (req, res) => {
  try {
    const post = await Image.findById(req.params.photoId);
    if (!post) {
      return res.status(404).json({ msg: "Post Not Found" });
    }

    // Check User
    if (post.user.toString() !== req.user.id) {
      return res.status(401).json({ msg: "User not authorized" });
    }
    await post.remove
    res.json({ msg: "Post removed" });
  } catch (err) {
    return res.status(404).json({ msg: "Post Not Found" });
    res.status(500).send("Server error");
  }
};

الواجهة الأمامية 

 const user = JSON.parse(localStorage.getItem("user"));
 const [photos, setPhotos] = useState([]);

const handleRemove = async (id) => {
    await axios
      .delete(`/api/images/user_images/${id}`, {
        headers: {
          "Content-Type": "application/json",
          "x-auth-token": user?.data.token,
        },
      })
      .then(() => {
        setPhotos(photos.filter((p) => p._id.toString() !== id.toString()));
      })
      .catch((err) => console.error(err));
  };

عند النقر عى زر الحذف يقع حذف الصورة لكن عند تحديث الصفحة تعود الصورة.

بالرجوع إلى قاعدة البيانات لاحظت أنه لم يتم حذف الصورة

شكرا على المساعدة

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

Recommended Posts

  • 0
بتاريخ الآن قال محمود سعداوي2:

في هذه الحالة ظهرت رسالة الخطأز post.remove is not a function

جرب استعمال findByIdAndRemove بدلا عن remove للحذف، انتبه الى تمرير المعامل اللازم:

await Image.findByIdAndRemove(req.params.photoId)
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المشكلة في الكود الخاص بك تكمن في السطر التالي:

await post.remove;

فبدلا من استخدام remove كخاصية سيجب عليك استعمالها كتابع:

await post.remove();

احفظ الملف ثم انظر ما تم ذلك.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...