我正在构建一个ExpressJS应用程序,并希望在集合上添加删除图标以删除单个项目。
我有点困惑如何做到这一点。
我想到的一种方法是将click事件绑定到快速视图中的图标,并在单击时对服务器执行ajax调用。
另一种方法是在图标周围创建一个表单,图标将是一个按钮,单击该图标时会提交表单。
我对这两种方法没有信心,任何人都以优雅的方式思考这种方式
答案 0 :(得分:0)
我推荐第二种方法,因为此时它更容易理解。
从你的话来说,我理解删除按钮可能是漏洞或安全漏洞,如果你做错了。确定它在任何方面都是删除按钮。 最安全的方法是使用会话变量。 除非获得授权(登录),否则用户无法删除。如果是,那么您在服务器上打开会话并向用户提供该会话的密钥。
在会话中,您可以通过提供在登录过程中提供给他的会话密钥,安全地存储与服务器交互的用户数据。
在此步骤中,用户将单击按钮以删除文档,但猜测他应该被授权删除此文档。这是他提供的会话密钥的时间,通知您他的身份。那么决定取决于您删除或拒绝他的请求。
所有上述词都是代码中会发生什么的概念。 我将为登录控制器编写两部分,以授予用户权限。第二个是删除文档控制器。
登录:
if(var user = isUser(username, password){
//open session
req.session.user_id = user._id
}
删除文档控制器:
if(req.session.user_id){
//if true that means he is logged in authorized user
//you can also to check by his user_id if he has the privilege to delete the document
document.delete();//in mongoose model.remove();
}
此解决方案用于删除任何文档的安全性。
答案 1 :(得分:0)
您可以通过多种方式实现所寻求的结果。
您可以使用包含要删除的项目ID YourURL.com/item/delete/id
的链接,并附加点击事件。单击链接时,您的处理程序应该能够获取id query
参数并使用它来对服务器进行AJAX调用。
此外,你可以使用你所说的按钮,这与上面的按钮基本相同
底线是,两种方法都非常标准,有些人可以使用隐藏元素,HTML元素,几乎任何可以存储ID
或值的东西,但你会发现大多数人也使用上述方法同样,哪个恕我直言是非常标准的。
下面是它应该如何工作的片段,我不确定你是否使用任何Javascript库,所以我用Vanilla Javascript编写脚本,如果你没有使用任何Javascript库或框架我强烈建议你做,它有帮助通过处理Javascript的方式减少您从浏览器差异中获得的许多麻烦。
PS:包含您尝试过的代码,以帮助说明如何回答您的问题。
var makeDeleteCall = function(e, id) {
e.preventDefault();
console.log(id);
// Make AJAX Call here to server to delete item with the ID
//After call to remote server you can then update the DOM to remove the item
document.getElementById(id).remove();
}

<!-- Using Link -->
<a href="#/delete/1" onclick="makeDeleteCall(event, 1);" id="1">
Delete Item
</a>
<br/>
<br/>
<!-- Using a Button-->
<button onclick="makeDeleteCall(event, 2);" id="2">
Delete Button
</button>
&#13;