Jade + mongodb + express.js,删除表单不起作用

时间:2016-05-03 20:47:33

标签: mongodb express pug

我的删除代码无效,我认为甚至没有开火,因为我没有看到我的console.log,我有一个与表单一起使用的添加按钮,它们看起来很相似,这就是为什么我不明白

app.js:

var db = monk('localhost:27017/mongodb');

玉:

extends admin_menu

block content
    h1.
        Cocktail list
    ul
        each cocktail, i in cocktaillist
            li
                p= cocktail.name
            form#form_delete_project(name="/admin/delete_cocktail", method="post", action="/admin/delete_cocktail")
            input#input_name(type="hidden", placeholder="", name="_id", value="#{cocktail._id}")
            button#submit_project(type="submit") delete

index.js:

router.post('/admin/delete_cocktail', function(req, res) {
    console.log(id)
    // Set our internal DB variable
    var db = req.db;

    // Get our form values. These rely on the "name" attributes
    var id = req.body._id;

    // Set our collection
    var collection = db.get('cocktailcollection');

    // Submit to the DB
    collection.remove({
        "_id":id

    }, function (err, doc) {
        if (err) {
            // If it failed, return error
            res.send("There was a problem removing the information to the database.");
        }
        else {
            // And forward to success page
            res.redirect("/admin/cocktail_list");
        }
    });
});

1 个答案:

答案 0 :(得分:1)

Jade建立在缩进之上。由于您没有缩进表单中的项目,因此不在您的表单中。在html中,您的代码看起来像这样:

<form>
</form>
<input name="_id">
<button>

由于您使用_id的输入位于表单之外,因此未发布。这就是您的控制台日志没有显示的原因。没有req.body._id.当然,您的提交按钮也在表单之外。所以它什么也没做。

所以,你要做的第一件事就是缩进代码。