使用Node.js从MongoDB删除记录的接口浏览器访问无响应求助
问题原因
核心问题是请求方法不匹配:
- 你定义的路由仅支持
POST请求:router.post("/delete/:studentEmail",sdeleteRecord); - 浏览器直接在地址栏输入URL时,发起的是
GET请求,服务器没有对应的GET路由处理该请求,因此会一直处于等待状态,无响应返回。
解决方案
有两种处理方式,推荐遵循REST规范的方案:
- 方式一(不推荐,存在安全风险):修改路由支持GET请求
// 仅支持GET router.get("/delete/:studentEmail",sdeleteRecord); // 同时支持POST和GET router.all("/delete/:studentEmail",sdeleteRecord); - 方式二(推荐):规范请求方式
不要用浏览器直接访问,继续使用Postman发送POST请求调用接口;如果需要前端页面触发删除,可通过设置method="POST"的表单,或者用AJAX发送POST请求。
代码优化建议
你的代码还有两处可以完善:
console.log('doc');只会打印字符串'doc',改为console.log(doc);才能查看删除的文档内容- 增加错误捕获,避免异步操作出错导致服务器挂起:
const sdeleteRecord = ("/delete/:studentEmail", async (req, res) => { try { const paramsValue = req.params['studentEmail']; console.log(paramsValue); const filter = { studentEmail: paramsValue }; console.log(filter); const doc = await studentInfo.findOneAndDelete(filter); console.log(doc); if (doc) { res.send('successfully deleted'); } else { res.status(404).send('Record not found'); } } catch (err) { console.error(err); res.status(500).send('Delete failed due to server error'); } });
内容的提问来源于stack exchange,提问作者subha
相关产品推荐
相关产品推荐

