Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
使用node.js删除mongodB中数组的路由_Node.js_Mongodb - Fatal编程技术网

使用node.js删除mongodB中数组的路由

使用node.js删除mongodB中数组的路由,node.js,mongodb,Node.js,Mongodb,这是我的数据库架构。我想为要删除的任务创建一个删除路由。有人能告诉我怎么做吗。现在我可以获取任务id 这里是我的c9项目的链接 希望这可以解决你的问题 var express = require('express'); var router = express(); //I will take static values you can give dynamic values by using req.body router.post('/Delete_User_Tas

这是我的数据库架构。我想为要删除的任务创建一个删除路由。有人能告诉我怎么做吗。现在我可以获取任务id

这里是我的c9项目的链接

希望这可以解决你的问题

var express = require('express');
    var router = express();

    //I will take static values you can give dynamic values by using req.body
    router.post('/Delete_User_Task',function(req,res){
        var UserSchema = require('/path/to/Schema.js');//your schema model path
        var username = 'akshansh123'; //assume it is present in db
        //If you want to remove all task of this user and set one task as empty string your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $set:{
                'tasks':[{
                    task:''
                }]
            }
        };

        //If you completely want to remove json array tasks from user document than your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $unset:{
                'tasks':''
            }
        };

        //If you want to remove particular task suppose say sleeping from user document than your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $pull:{
                'tasks':{
                    'task':'sleeping'
                }
            }
        };
    //If you want to remove selected tasks suppose say sleeping,walking,drinking from user document than your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $pull:{
                'tasks':{
                    'task':{
                        $in:['sleeping','walking','drinking']
                    }
                }
            }
        };
        UserSchema.update(query,changes,function(err,Result){
            if(!err){
                res.send('Successfully Removed tasks');
            }else{
                res.send('something went wrong');
                console.log(err);
            }
        })

    })

这是我使用的删除路径。

可能与我找到的方法重复…但仍然感谢您的回复。.我使用了补丁而不是post。您可以发布您的答案并关闭此问题
var express = require('express');
    var router = express();

    //I will take static values you can give dynamic values by using req.body
    router.post('/Delete_User_Task',function(req,res){
        var UserSchema = require('/path/to/Schema.js');//your schema model path
        var username = 'akshansh123'; //assume it is present in db
        //If you want to remove all task of this user and set one task as empty string your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $set:{
                'tasks':[{
                    task:''
                }]
            }
        };

        //If you completely want to remove json array tasks from user document than your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $unset:{
                'tasks':''
            }
        };

        //If you want to remove particular task suppose say sleeping from user document than your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $pull:{
                'tasks':{
                    'task':'sleeping'
                }
            }
        };
    //If you want to remove selected tasks suppose say sleeping,walking,drinking from user document than your query and changes will be like below
        var query = {
            'username' :username
        };
        var changes = {
            $pull:{
                'tasks':{
                    'task':{
                        $in:['sleeping','walking','drinking']
                    }
                }
            }
        };
        UserSchema.update(query,changes,function(err,Result){
            if(!err){
                res.send('Successfully Removed tasks');
            }else{
                res.send('something went wrong');
                console.log(err);
            }
        })

    })
app.patch("/todo/:id",function(req,res){
  User
    .findById(req.user.id, function(err, foundUser) {
        if(err){
            req.flash("error",err.message);
            console.log(err);
            return res.redirect("back");
        } if(!foundUser) {
              req.flash("error","User not found");
            return res.redirect("back");
        } else {
            foundUser.update({$pull: {tasks: {_id: req.params.id}}}, function(err) {
                if(err) {
                    req.flash("error",err.message);
                    console.log(err);
                    return res.redirect("back");
                } else {
                      req.flash("success","Task removed");
                    return res.redirect("/todo");
                }
            });
        }
    });
});