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

使用Mongoose删除MongoDB数据时页面持续加载的问题

问题分析与修复方案

核心问题

  1. 路由未返回响应:/delete/:id路由里的findByIdAndRemove是异步操作,但你注释了res.redirect('/')和错误返回代码,导致服务器收到删除请求后,从未给浏览器返回任何响应,页面因此一直处于加载等待状态。另外,try/catch无法捕获异步回调里的错误,因为异步代码的错误不在当前同步执行栈中。

  2. EJS链接格式错误:模板里的删除链接把**写在了href的引号内部,生成的URL会变成/delete/[id]**,这是无效地址,请求无法被正确路由到删除接口。


修正后的代码

router.js

router.get('/delete/:id', (req, res) => {
  todoNew.findByIdAndRemove(req.params.id, (err) => {
    if (err) {
      console.error(err);
      return res.status(500).send('删除失败');
    }
    res.redirect('/');
  });
});

或者更推荐用async/await写法,错误处理更直观:

router.get('/delete/:id', async (req, res) => {
  try {
    await todoNew.findByIdAndRemove(req.params.id);
    res.redirect('/');
  } catch (err) {
    console.error(err);
    res.status(500).send('删除失败');
  }
});

index.ejs

修正链接的语法错误,去掉多余的**:

<% if(todoData) { %>
  <% todoData.forEach(item=> { %>
    <li>
      <%= item.test %>&nbsp;&nbsp;
      <a href="/delete/<%=item._id%>">delete</a>
    </li>
  <% }) %>
<% } %>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:42:15