我正在尝试为列表中的某些项目创建删除选项。我这样做的方法是给列表中的每个项目一个按钮或某种类型的链接,使用POST发送_id(来自mongodb)。正如您在下面的代码中看到的那样(req.body.id),我试图从请求中获取id。但是,请求没有id,因为我不知道如何在不使用表单和输入字段的情况下执行此操作。
我已经在PHP中看到了使用javascript进行某些操作的方法。但是有更多的jade和node.js具体方式吗?
router.post("/deleteitem", function(req,res) {
var db = req.db;
var collection = db.get("itemcollection");
id = req.body.id;
collection.remove({
"_id": id
}, function (err, removed) {
if (err) {
res.send("Error");
}
else {
res.redirect("editlist");
}
});
});
感谢您的帮助。
编辑:
客户端:
extends layout
block content
h1.
Items
ul
each item, i in editlist
li
p #{item.name} costs #{item.price}
button#btnSubmit(type="button",method="post",action="/deleteitem") Delete
a(href="/") Back to start
按钮部分虽然不是很相关。首先,我不确定是否可以这样做。其次,我没有以任何方式包含id。我只是在试验。
我可能做的一种方法是将url中的id作为参数包含在内。但这似乎比仅使用POST并在请求中包含id更复杂。
答案 0 :(得分:1)
您需要使用html表单将POST
数据公开给req.body
对象,即使它只是带有隐藏数据的按钮的形状。您可以使用input
元素和表单内的button
元素一起执行此操作。
extends layout
block content
h1.
Items
ul
each item, i in editlist
li
p #{item.name} costs #{item.price}
form(action="/deleteitem",method="post")
input(type="hidden",id="id",value="#{item.id}")
button#btnSubmit(type="button") Delete
a(href="/") Back to start
此代码假定每个item
都有id
属性。
通过此功能,您可以在使用该按钮提交的下一条路线中通过id
获取req.body.id
值。