javascript - 如何使用 MongoDB 和 Jade (Express.js) 通过 _id 删除文档?

标签 javascript node.js mongodb express pug

我已经成功地使用 mongodb 建立了一个数据库,并且我已经设法将新的条目添加到我的收藏中。但是,当我使用类似的方法删除时,没有任何反应。

Express.js 代码

router.post('/deleteproject', function(req, res) {
var MongoClient = mongodb.MongoClient;

var url = 'mongodb://localhost:27017/plugd';

MongoClient.connect(url, function(err, db) {
    if (err) {
        console.log("Unable to connect to server", err);
    } else {
        console.log('Connected to server');

        var collection = db.collection('projects');

        collection.remove(
            {_id: new mongodb.ObjectID(req.body)}, function(err, result) {
            if (err) {
                console.log(err);
            } else {
                res.redirect("thelist");
            }
            db.close();
        });
    }
});

});

Jade 码

h2.
ul
    Projects
    each project, i in projectlist
        #project_list_item
            a(href='#') #{project.owner} - #{project.project} 
            p #{project.ref1} 
            p #{project.ref2} 
            p #{project.ref3}
            form#form_delete_project(name="deleteproject", method="post", action="/deleteproject")
            input#input_name(type="hidden", placeholder="", name="_id", value="#{project._id}")
            button#submit_project(type="submit") delete

最佳答案

我想通了。这是我使用 express.js 中的路由器从 mongodb 集合中删除数据的修复方法。

Express.js

    router.post('/deleteproject', function(req, res) {
       var MongoClient = mongodb.MongoClient;
       var ObjectId = require('mongodb').ObjectId;
       var url = 'mongodb://localhost:27017/app';

    MongoClient.connect(url, function(err, db) {
        if (err){
            console.log('Unable to connect to server', err);

        } else {
            console.log("Connection Established");

            var collection = db.collection('projects');

            collection.remove({_id: new ObjectId(req.body._id)}, function(err, result) {
                if (err) {
                    console.log(err);
                } else {
                    res.redirect("thelist");
                }
                db.close();                                 
            });
        }   
    });         
});

Jade 码

extends layout

block content

    h2.
        Projects
    ul
        each project, i in projectlist
            #project_list_item
                a(href='#') #{project.owner} - #{project.project} 
                p #{project.ref1} 
                p #{project.ref2} 
                p #{project.ref3}
            form#form_delete_project(name="deleteproject", method="post", action="/deleteproject")
                input#input_name(type="hidden", placeholder="", name="_id", value="#{project._id}")
                button#submit_project(type="submit") delete

jade 文件正在呈现到一个名为“thelist”的页面,该页面列出了集合中的每个项目。

表单部分处理列表中每个项目的删除功能。

只要我让 Jade 的缩进满意,这对我就有效 :)

关于javascript - 如何使用 MongoDB 和 Jade (Express.js) 通过 _id 删除文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35519461/

相关文章:

java - MongoTemplate条件查询翻译似乎不正确

javascript - openpgpjs 示例中的错误 : 'openpgp.encrypt is not a function'

node.js - 我可以在后台运行 Node.js 命令行应用程序并通过按键调用它吗?

JavaScript 超时 div

node.js - Buffer 对象上的展开运算符

node.js - 云9+mongodb+nodejs

javascript - MongoDB,大数据慢查询

python - $ne 不适用于 pymongo

javascript - http 服务器响应异步函数的输出

javascript - 如何将 Ember.JS 与数据库连接?