Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用MongoDB和Jade(Express.js)通过_id删除文档?_Javascript_Node.js_Mongodb_Express_Pug - Fatal编程技术网

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

Javascript 如何使用MongoDB和Jade(Express.js)通过_id删除文档?,javascript,node.js,mongodb,express,pug,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(

我已经使用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();
        });
    }
});
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
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
}))

玉码

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();
        });
    }
});
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
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

试试这个,看看它是否有效:

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: req.body}, function(err, result) {
        if (err) {
            console.log(err);
        } else {
            res.redirect("thelist");
        }
        db.close();
    });
}
});
});

由于您使用的是MongoDB的Node.js本机驱动程序,因此不需要在ObjectId中添加id。您可以直接将_id指定为
字符串

我猜出来了。下面是我使用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();                                 
            });
        }   
    });         
});
玉码

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();
        });
    }
});
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
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文件正在呈现到一个名为“列表”的页面,该页面列出集合中的每个项目

表单部分处理列表中每个项目的删除函数


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

我更新了我的express代码,但仍然没有得到响应。我发现错误在我的jade文件中。我不得不取消表单行。然而,现在表单正在执行,我得到了/deleteproject的404notfound错误。有什么想法吗??