찾다

 >  Q&A  >  본문

javascript - 这个路由这么写有什么问题?我想删掉一条记录

我在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
ringa_leeringa_lee2786일 전388

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 16:37:04

    ID를 확인하세요

    <코드>/roomview/delete?id=<%=room._id%>
    router.get("/삭제", cb)    
    req.query.id
    
    /roomview/delete/<%=room._id%>
    router.get("/delete/:id", cb)
    req.params.id
    

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 16:37:04

    @soonfy가 정답입니다.

    경로 변수 형식으로 매개변수가 필요하다고 경로에서 선언했습니다: /delete/:id,

    그러나 페이지에서는 매개변수가 쿼리 매개변수 형식으로 제공됩니다: /roomview/delete?id=<%=room._id%> .

    그것은 확실히 잘못될 것입니다. 가장 직관적인 징후는 오류가 발생한다는 것입니다. 즉, 지정된 규칙 때문에 /roomview/delete 경로에 해당하는 프로세서를 전혀 찾을 수 없다는 것입니다. 귀하의 프로세서는 /delete가 아니라 /delete/:id입니다.

    해결책도 간단합니다. 페이지를 /roomview/delete/<%=room._id%>로 변경하면 문제가 없을 것입니다.

    회신하다
    0
  • 취소회신하다