You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fetch Delete请求无法正常工作问题排查

我来帮你把这段前后端的删除逻辑整理清楚,附上详细的代码说明和实用建议:

前端Fetch发送DELETE请求 + 后端Mongoose批量删除资源实现

前端:使用Fetch API触发删除操作

这段代码通常绑定在删除按钮的点击事件上,通过Fetch API向后端发送DELETE请求:

const target = e.currentTarget;
fetch(target.href, { 
  method: 'delete',
})
.then(res => console.log('删除请求已处理')) // 把原console.log(22)改成更语义化的输出,方便调试
.catch(err => console.error('删除请求出错:', err));

小提示:

  • target.href需要对应后端的删除接口地址(比如 /api/images/123,其中123是要删除的图片ID)
  • 如果后端需要认证,可以在Fetch的配置里添加请求头,比如:
    headers: {
      'Authorization': `Bearer ${yourToken}`
    }
    

后端:Express+Mongoose中间件处理批量删除

这段中间件负责同时删除指定图片和所有关联它的评论,用Promise.all并行处理两个异步操作,提升效率:

exports.deleteImageById = async (req, res) => {
  try {
    const image_id = req.params.image_id;
    // 定义两个异步删除任务
    const deleteImage = Image.findByIdAndRemove(image_id);
    const deleteComments = Comment.remove({ image_id });
    
    // 并行执行两个任务,等待全部完成
    await Promise.all([deleteImage, deleteComments]);
    
    // 返回成功响应
    res.status(200).json({ success: true, message: '图片及关联评论已删除' });
  } catch (error) {
    // 捕获并返回错误信息,避免服务器崩溃
    res.status(500).json({ success: false, error: error.message });
  }
};

关键说明:

  • 补全了原代码中Promise.all的语法缺失,并且添加了try/catch错误处理(生产环境必须加,否则未处理的错误会导致服务异常)
  • Image和Comment是你定义的Mongoose模型,对应MongoDB中的数据集合
  • 并行执行两个删除操作比顺序执行更快,因为两个操作不需要等待彼此完成
  • 后端路由需要配置为DELETE /api/images/:image_id,这样req.params.image_id才能获取到URL中的图片ID

内容的提问来源于stack exchange,提问作者Aditya Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:14:41