我在roomview.html页面上想要删掉一条显示出来的记录,roomview.html部分代码如下:
<h1>房间列表</h1>
<p>
<a href="/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="/roomview/delete?id=<%=room._id%>">删除房间</a> | <a href="/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
獲取id
soonfy
@soonfy 就是正解。
你在路由裡聲明了按照
path variable
的形式要求參數:/delete/:id
,path variable
的形式要求参数:/delete/:id
,但在页面上却又用了
query parameter
的形式提供参数:/roomview/delete?id=<%=room._id%>
。那肯定会出错,最直观的表现就是你遇到错误,即:压根没找到路由
/roomview/delete
对应的处理器,因为你的处理器指定的规则是/delete/:id
,而非/delete
。解决方案也简单,把页面里改成
但在頁面上卻又用了/roomview/delete/<%=room._id%>
query parameter
的形式提供參數:/roomview/delete?id=
。 🎜 🎜那一定會出錯,最直覺的表現就是你遇到錯誤,也就是:壓根沒找到路由/roomview/delete
對應的處理器,因為你的處理器指定的規則是/delete/:id
,而非/delete
。 🎜 🎜解決方案也簡單,把頁面改成/roomview/delete/
,應該就好了🎜