javascript - 这个路由这么写有什么问题?我想删掉一条记录
问题描述
我在roomview.html页面上想要删掉一条显示出来的记录,roomview.html部分代码如下:
<h1>房间列表</h1><p> <a href='https://www.haobala.com/roomview/addroom'>增加</a></p><table> <thead> <tr><th>_id</th><th>roomName</th><th>roomContent</th><th>roomCreateUser</th><th>roomImg</th><th>roomCreateDate</th><th>roomJoinPeos</th><th>roomChat</th> </tr> </thead> <tbody> <% rooms.forEach(function( room ){ %> <tr><td><%= room._id%></td><td><%= room.roomName %></td><td><%= room.roomContent %></td><td><%= room.roomCreateUser %></td><td><%= room.roomImg %></td><td><%= room.roomCreateDate %></td><td><%= room.roomJoinPeos %></td><td><%= room.roomChat %></td><td><a href='https://www.haobala.com/roomview/delete?id=<%=room._id%>'>删除房间</a> | <a href='https://www.haobala.com/roomview/modifyroom?id=<%=room._id%>'>更新房间信息</a></td> </tr> <% }); %> </tbody>
路由roomview.js对应删除部分代码如下:
router.get('/delete/:id',function(req,res){ console.log(req.params.id); Room.findById(req.params.id,function(err,doc){if(!doc){ return next(new NotFound('Doc not found'))}else{ doc.remove(function(){res.redirect('/roomview'); })} });});
不过当我点击删除房间后页面却显示如下:
Cannot GET /roomview/delete
问题解答
回答1:获取id
/roomview/delete?id=<%=room._id%>router.get('/delete', cb) req.query.id/roomview/delete/<%=room._id%>router.get('/delete/:id', cb)req.params.id
soonfy
回答2:@soonfy 就是正解。
你在路由里声明了按照path variable的形式要求参数:/delete/:id,
但在页面上却又用了query parameter的形式提供参数: /roomview/delete?id=<%=room._id%>。
那肯定会出错,最直观的表现就是你遇到错误,即:压根没找到路由/roomview/delete对应的处理器,因为你的处理器指定的规则是/delete/:id,而非/delete。
解决方案也简单,把页面里改成/roomview/delete/<%=room._id%>,应该就好了
相关文章:
1. javascript - vue2如何获取v-model变量名2. javascript - 求帮助 , ATOM不显示界面!!!!3. html5 - HTML代码中的文字乱码是怎么回事?4. javascript - vue2.0中,$refs对象为什么用驼峰的方式获取不到属性?5. python bottle跑起来以后,定时执行的任务为什么每次都重复(多)执行一次?6. 解决Android webview设置cookie和cookie丢失的问题7. javascript - nodejs使用mongoose连接数据库,使用post提交表单在后台,后台处理后调用res.redirect()跳转界面无效?8. javascript - 能否让vue-cli的express修改express重启服务9. python - 爬虫模拟登录后,爬取csdn后台文章列表遇到的问题10. html5 - 急求?被公司问住了
