使用 app.delete [express.js] 删除 mongo 数据库中的 collections
Use app.delete [express.js] to delete collections in a mongo database
问题 1:
我想知道 app.delete 的目的是什么。
我的数据库中有这个用于删除 collection 的动态按钮:
<a class="destroy" href="delete/839894898293"> Delete </a>
839894898293 = _ID(我正在使用 EJS 填充此按钮。
而且我有这条 app.get 路线可以通过 ID 找到 collection 并将其删除:
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:
我正在使用以下代码来确认删除:
$(document).ready(function() {
$('.destroy').click(function() {
confirm("Are you sure?");
});
});
当我点击时,会出现确认,但如果我取消,collection 无论如何都会被删除。为什么?我该如何修复??
对于问题 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?");
});
您可能希望为此使用 app.delete,而不是 app.get。这是因为 app.get 将响应对您的资源的 GET 请求,即方法类型为 GET 的 HTTP 请求。这通常用于从 Web 服务器获取信息,并且通常不应有任何副作用(即影响您的数据)。这是因为网络爬虫通常会命中所有 GET 端点。如果 google 爬虫要访问您的页面,请查看 link,然后跟随它,您真的希望 Google 不小心删除您的数据吗?可能不会。
您可以找到更多关于 HTTP 方法的信息 here。
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
需要指向正确的项目,trim 来自浏览器的 url 中的每个白色 space。
问题 1:
我想知道 app.delete 的目的是什么。
我的数据库中有这个用于删除 collection 的动态按钮:
<a class="destroy" href="delete/839894898293"> Delete </a>
839894898293 = _ID(我正在使用 EJS 填充此按钮。
而且我有这条 app.get 路线可以通过 ID 找到 collection 并将其删除:
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:
我正在使用以下代码来确认删除:
$(document).ready(function() {
$('.destroy').click(function() {
confirm("Are you sure?");
});
});
当我点击时,会出现确认,但如果我取消,collection 无论如何都会被删除。为什么?我该如何修复??
对于问题 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?");
});
您可能希望为此使用 app.delete,而不是 app.get。这是因为 app.get 将响应对您的资源的 GET 请求,即方法类型为 GET 的 HTTP 请求。这通常用于从 Web 服务器获取信息,并且通常不应有任何副作用(即影响您的数据)。这是因为网络爬虫通常会命中所有 GET 端点。如果 google 爬虫要访问您的页面,请查看 link,然后跟随它,您真的希望 Google 不小心删除您的数据吗?可能不会。
您可以找到更多关于 HTTP 方法的信息 here。
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
需要指向正确的项目,trim 来自浏览器的 url 中的每个白色 space。