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

Node.js+MongoDB项目Delete删除路由无法触发问题排查求助

问题根因与解决方法

1. 核心错误:前端请求路径格式不匹配

你后端配置的DELETE路由规则为/api/data/storm/:stormId,路径参数stormId和前半段路径之间是斜杠分隔,但前端fetch调用时错误将斜杠写为冒号:

// 错误写法
fetch(`/api/data/storm:${oldStormId}`, { method: "delete" })

格式不匹配导致路由无法命中,修正为如下写法即可正常触发删除逻辑:

// 正确写法
fetch(`/api/data/storm/${oldStormId}`, { method: "delete" })

2. 其他优化与排查点

  • 点击事件中获取ID的DOM遍历逻辑脆弱,只要HTML结构调整就会失效,你已经在删除图标上存储了value属性,直接读取更稳定:
    let oldStormId = evt.currentTarget.getAttribute("value")
    
  • 可先通过浏览器开发者工具「网络」面板确认DELETE请求的返回状态:如果返回404则确认是路径匹配问题,如果返回405/403则检查Express服务、反向代理是否允许DELETE请求方法。
  • Express路由中重复定义了router.route('/storm').get(getAllStorms),属于冗余代码可直接删除。
  • 控制器层混用了async/await和.then链式调用,建议统一为async/await写法避免逻辑隐患:
    async deleteStorm(req, res) {
      try {
        const dbStormData = await Storm.findOneAndRemove({ _id: req.params.stormId })
        if (!dbStormData) {
          return res.status(404).json({ message: 'No storm with this id!' });
        }
        res.json({ message: 'Storm successfully deleted!' });
      } catch (err) {
        res.status(500).json(err)
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:09:05