محمود سعداوي2 نشر 2 نوفمبر 2023 أرسل تقرير مشاركة نشر 2 نوفمبر 2023 السلام عليكم. لحذف صورة من قاعدة البيانات قمت بالكود التالي 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)); }; عند النقر عى زر الحذف يقع حذف الصورة لكن عند تحديث الصفحة تعود الصورة. بالرجوع إلى قاعدة البيانات لاحظت أنه لم يتم حذف الصورة شكرا على المساعدة 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Adnane Kadri نشر 2 نوفمبر 2023 أرسل تقرير مشاركة نشر 2 نوفمبر 2023 بتاريخ الآن قال محمود سعداوي2: في هذه الحالة ظهرت رسالة الخطأز post.remove is not a function جرب استعمال findByIdAndRemove بدلا عن remove للحذف، انتبه الى تمرير المعامل اللازم: await Image.findByIdAndRemove(req.params.photoId) 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Adnane Kadri نشر 2 نوفمبر 2023 أرسل تقرير مشاركة نشر 2 نوفمبر 2023 المشكلة في الكود الخاص بك تكمن في السطر التالي: await post.remove; فبدلا من استخدام remove كخاصية سيجب عليك استعمالها كتابع: await post.remove(); احفظ الملف ثم انظر ما تم ذلك. 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 محمود سعداوي2 نشر 2 نوفمبر 2023 الكاتب أرسل تقرير مشاركة نشر 2 نوفمبر 2023 بتاريخ 1 دقيقة مضت قال Adnane Kadri: remove() في هذه الحالة ظهرت رسالة الخطأز post.remove is not a function اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 محمود سعداوي2 نشر 2 نوفمبر 2023 الكاتب أرسل تقرير مشاركة نشر 2 نوفمبر 2023 بتاريخ 2 دقائق مضت قال Adnane Kadri: await Image.findByIdAndRemove(req.params.photoId) جربت هذا الكود await post.deleteOne() فتمت العملية بنجاح اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
محمود سعداوي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)); };
عند النقر عى زر الحذف يقع حذف الصورة لكن عند تحديث الصفحة تعود الصورة.
بالرجوع إلى قاعدة البيانات لاحظت أنه لم يتم حذف الصورة
شكرا على المساعدة
رابط هذا التعليق
شارك على الشبكات الإجتماعية
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.