骨干客户端更新模型属性:

ocase.save({ currentStep : theStep },callback);

服务器端猫鼬代码:
OCase.findByIdAndUpdate(req.params.id,
        req.body, callback);

它在MongodB2.6上运行良好,但在MongodB2.4上不工作,错误是:
update err:MongoError: exception: Mod on _id not allowed

所以我试图删除“\u id”,只保存其他属性:
OCase.findByIdAndUpdate(req.params.id,
            {subject    : req.body.subject,
            description : req.body.description
        },callback);

然后我又犯了一个错误:
update err:TypeError: Cannot read property '_id' of undefined

我真的很困惑,我现在能做什么?
最后,我必须先查询(findbyid)文档,然后调用“save”方法进行更新。
OCase.findById(req.params.id,
        function(err,ocase){
            ocase.set(req.body);
            ocase.save(function(err,ocase){
                res.send(ocase);

            });
        });

最佳答案

通过添加$set运算符来解决此问题:

OCase.findByIdAndUpdate(req.params.id, {
        $set: {
            subject: req.body.subject,
            description: req.body.description,
            currentStep: req.body.currentStep
        }
    }, callback);

关于mongodb - 如何在mongodb 2.4中使用findByIdAndUpdate?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28104325/

10-09 20:55