node js delete 走错路线

node js delete go to wrong route

我有应用程序。我通过 id 添加了 DELETE 功能。看起来像:

router.delete('/delete/:id', async function (req, res){
    console.log("I'm here..");
    try {
        var id = req.params.id;
        console.log("here!!!");
        console.log(id);
        var x = await Order.findByIdAndDelete(id).exec();
        await x.save();
        console.log("deleted!");
    }catch (exc){console.log("Error during deleting!")}
    res.redirect('back');

});

我的观点也有表格(我使用EJS)。

<h1 class="mt-4">Dashboard</h1>
<p class="lead mb-3">Witaj <%= user.name %></p>
<% include ('./partials/messages.ejs')%>
<div class="row mt-5 float-left">
            Wszystkie zamówienia
            <table class="table float-left">
                <tbody>
                <% orders.forEach(function(value) { %>
                    <tr>

                            <form method="PATCH" action="/orders/order/<%=value.id%>">
                            <td>Id zamówienia <%= value.id %></td>
                            <td>Id klienta <%= value.userID %></td>
                            <td><input type="datetime-local" value= <%= value.dateStart  %>
                                min=<%= value.dateStart %> max=<%= value.dateFinish %>> data rozpoczęcia</td>

                            <td><input type="datetime-local" value= <%= value.dateFinish %>
                                min=<%= value.dateStart %> max=<%= value.dateFinish %> >data zakończenia</td>
                            <td>Cena: <%= value.total %></td>
                            <td>Ilość dni <%= value.numberOfDays %></td>
                            <td> <button type="submit" class="btn btn-primary btn-lg">Edytuj i akceptuj</button></td>
                            </form>
**THERE IS A BUTTON**       <form method="DELETE" action="/orders/delete/<%=value.id%>">
                                <td><button type="submit" class="btn btn-primary btn-lg" value="delete">Usuń</button></td></form>
                            <form method="POST" action="/orders/confirmOrder/<%=value.id%>">
                                <td><button type="submit" class="btn btn-primary btn-lg">Akceptuj</button></td></form>

                    </tr>
                <% }) %>
                </tbody>
            </table>
</div>

一切看起来都很好,应该可以工作,但没有! Http 请求看起来没问题:

GET /orders/delete/607d4b8b06e1aee2dfa901be? 404 84.803 ms - 2580 - 但 WebStorm 在控制台中显示 GET。很奇怪。为什么?它应该显示 DELETE。订单 ID 没问题 - 从数据库中获取。

Console.logs 来自像“这里!!!”、“我在这里..”这样的路线不会被控制台显示。所以我认为路线有问题。

此外,在操作后我的布局停止工作,因为“用户未定义”- 是的,我检查用户是否登录到布局中。这表明出了点问题——我在其他操作中遇到了同样的情况,但我修复了它。我晚上在这里呆了 4 个小时,还没修好。 请告诉我这里有什么问题。

亲切的问候!

问题解决了! HTML <form> 不支持 DELETE!我被迫使用jquery发送delete请求,或者在路由和视图中将delete更改为post

现在我的视野和路线看起来:

<td><button type="submit" id="del-button" class="btn btn-primary btn-lg " value=<%=value.id%>>Usuń</button></td></form>

和路线:

router.post('/delete/:id', async function (req, res){
 //body here
});

我留下了答案。也许以后会有人用。