我在roomview.html页面上想要删掉一条显示出来的记录,roomview.html部分代码如下:
房间列表
_id
roomName
roomContent
roomCreateUser
roomImg
roomCreateDate
roomJoinPeos
roomChat
<% rooms.forEach(function( room ){ %>
<%= room._id%>
<%= room.roomName %>
<%= room.roomContent %>
<%= room.roomCreateUser %>
<%= room.roomImg %>
<%= room.roomCreateDate %>
<%= room.roomJoinPeos %>
<%= room.roomChat %>
删除房间 | 更新房间信息
<% }); %>
路由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
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
获取id
soonfy
@soonfy 就是正解。
你在路由里声明了按照
path variable的形式要求参数:/delete/:id,但在页面上却又用了
query parameter的形式提供参数:/roomview/delete?id=<%=room._id%>。那肯定会出错,最直观的表现就是你遇到错误,即:压根没找到路由
/roomview/delete对应的处理器,因为你的处理器指定的规则是/delete/:id,而非/delete。解决方案也简单,把页面里改成
/roomview/delete/<%=room._id%>,应该就好了