问题1:
我想知道app.delete的目的是什么。
我在我的数据库中有删除集合的这个dinamically按钮:
<a class="destroy" href="delete/839894898293"> Delete </a>
839894898293 = _ID(我正在使用EJS来填充此按钮。
我有这个app.get路由按ID找到集合并删除它:
app.get('/delete/:id', function(req, res) {
var id = req.param("id");
MyModel.remove({
_id: id
}, function(err){
if (err) {
console.log(err)
}
else {
res.send("Removed");
}
});
}
这是100%工作,我可以使用..但是,为什么app.delete存在?难道我做错了什么???我可以使用app.delete ???
问题2:
我正在使用以下代码来确认deletate:
$(document).ready(function() {
$('.destroy').click(function() {
confirm("Are you sure?");
});
});
当我点击时,会出现确认,但如果我取消,则无论如何都会删除该集合。为什么?我该怎么办?
答案 0 :(得分:3)
问题1:
app.delete
用于DELETE
HTTP动词。 app.get
用于提出GET
请求; app.delete
适用于DELETE
个。
问题2:
$('.destroy').click(function() {
confirm("Are you sure?");
});
您正在运行confirm
,然后删除结果。您需要return
结果才能取消它:
$('.destroy').click(function() {
return confirm("Are you sure?");
});
答案 1 :(得分:0)
您可能希望使用app.delete,而不是app.get。这是因为app.get将响应对您资源的GET请求,即方法类型为GET的HTTP请求。这通常用于从Web服务器获取信息,通常不应有任何副作用(即影响您的数据)。这是因为网络抓取工具通常会访问所有GET端点。如果谷歌抓取工具要点击您的页面,请看链接,然后按照它,您是否真的希望Google意外删除您的数据?可能不是。
您可以找到有关HTTP方法的更多信息here。
答案 2 :(得分:0)
app.delete('/delete/:id', function(req, res) {
var id = req.param("id");
MyModel.remove({
_id: id
}, function(err){
if (err) {
console.log(err)
}
else {
return res.send("Removed");
}
});
});
然后对于按钮,@ scimonster为你澄清了它。
为了它也正常工作
端点/delete/:id
需要指向正确的项目,修剪来自浏览器的网址中的每个空格。