findAndModify() 在猫鼬中给出异常

Posted

技术标签:

【中文标题】findAndModify() 在猫鼬中给出异常【英文标题】:findAndModify() giving exception in mongoose 【发布时间】:2015-02-12 23:23:14 【问题描述】:

我有以下代码来更新子集合字段中的文档,并且我得到了代码后面的异常。

router.route('/user/:_id/host/:_id/accept/').post(function(req, res) 
    Host.findAndModify(
        "query" : 
            "_id" : req.body.eventid,
            "joinees" : 
                "$elemMatch" : 
                    "userid" : req.body.userid
                
            
        ,
        "update" : 
            "$set" : 
                "joinees.$.status_code" : 1
            ,
        ,
        "new" : true,
        "upsert" : false
    , function(err, host) 
        if (err) 
            console.log(err);
            res.json(err);
         else 
            console.log("kanishka");
            res.json(host);

        
    );
);

控制台打印的异常如下:

TypeError: undefined is not a function
    at Object.handle (/node/Playo1/server1.js:332:7)
    at next_layer (/node/Playo1/node_modules/express/lib/router/route.js:103:13)
    at Route.dispatch (/node/Playo1/node_modules/express/lib/router/route.js:107:5)
    at /node/Playo1/node_modules/express/lib/router/index.js:195:24
    at param (/node/Playo1/node_modules/express/lib/router/index.js:268:14)
    at param (/node/Playo1/node_modules/express/lib/router/index.js:280:16)
    at param (/node/Playo1/node_modules/express/lib/router/index.js:280:16)
    at Function.proto.process_params (/node/Playo1/node_modules/express/lib/router/index.js:296:3)
    at next (/node/Playo1/node_modules/express/lib/router/index.js:189:19)
    at next (/node/Playo1/node_modules/express/lib/router/index.js:166:38)

【问题讨论】:

.findAndModify() 不是猫鼬模型的方法。请参阅.findOneAndUpdate().findByIdAndUpdate(),它们是底层驱动程序方法的特殊用途包装器。 @NeilLunn:谢谢 Buddy...它成功了... 【参考方案1】:

试试这个。这将起作用。

router.route('/user/:_id/host/:_id/accept/')
.post(function(req, res) 

        Host.findOneAndUpdate(
                "_id" : req.body.eventid,
                "joinees" : 
                        "$elemMatch" : 
                                "userid" : req.body.userid
                        
                
        , 
                "$set" : 
                        "joinees.$.status_code" : 1
                
        , 
                "new" : true,
                "upsert" : false
        , function(err, host) 
                if (err) 
                        console.log(err);
                        res.json(err);
                 else 
                        res.json(
                                message : "request Accepted",
                                requestStatus : 1
                        );
                
        );
);

【讨论】:

我正在尝试这个。非常感谢。 不适合我,同样的错误TypeError: Collections.findOneAndUpdate is not a function

以上是关于findAndModify() 在猫鼬中给出异常的主要内容,如果未能解决你的问题,请参考以下文章

在猫鼬中,如果我正在创建一个包含 4 个字段的模式。但我只保存两个字段的值。如何更新未给出的字段值?

在猫鼬中填充嵌套模型

在猫鼬中填充嵌套模型

在猫鼬中使用时“修剪”是啥意思?

在猫鼬中使用时“修剪”是啥意思?

在猫鼬中排序