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
});
我留下了答案。也许以后会有人用。
我有应用程序。我通过 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
});
我留下了答案。也许以后会有人用。