使用Mongoose删除MongoDB数据时页面持续加载的问题
问题分析与修复方案
核心问题
路由未返回响应:
/delete/:id路由里的findByIdAndRemove是异步操作,但你注释了res.redirect('/')和错误返回代码,导致服务器收到删除请求后,从未给浏览器返回任何响应,页面因此一直处于加载等待状态。另外,try/catch无法捕获异步回调里的错误,因为异步代码的错误不在当前同步执行栈中。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 %> <a href="/delete/<%=item._id%>">delete</a> </li> <% }) %> <% } %>
内容的提问来源于stack exchange,提问作者kulsumbi
相关产品推荐
相关产品推荐

