首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mongodb2.4上使用findByIdAndUpdate?

如何在mongodb2.4上使用findByIdAndUpdate?
EN

Stack Overflow用户
提问于 2015-01-23 14:38:29
回答 1查看 9.8K关注 0票数 3

backbone客户端更新模型属性:

代码语言:javascript
复制
ocase.save({ currentStep : theStep },callback);

服务端mongoose代码:

代码语言:javascript
复制
OCase.findByIdAndUpdate(req.params.id,
        req.body, callback);

它在mongodb2.6上工作得很好,但在mongodb2.4上就不行了,错误是:

代码语言:javascript
复制
update err:MongoError: exception: Mod on _id not allowed

所以我试着去掉"_id",只保存其他属性:

代码语言:javascript
复制
OCase.findByIdAndUpdate(req.params.id,
            {subject    : req.body.subject,
            description : req.body.description    
        },callback);

然后我得到了另一个错误:

代码语言:javascript
复制
update err:TypeError: Cannot read property '_id' of undefined

我真的很困惑,我现在该怎么办?

最后,我必须先查询(保存)文档,然后调用“findById”方法进行更新。

代码语言:javascript
复制
OCase.findById(req.params.id,
        function(err,ocase){
            ocase.set(req.body);
            ocase.save(function(err,ocase){
                res.send(ocase);

            });
        });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-24 02:05:32

通过添加$set运算符来解决它:

代码语言:javascript
复制
OCase.findByIdAndUpdate(req.params.id, {
        $set: {
            subject: req.body.subject,
            description: req.body.description,
            currentStep: req.body.currentStep
        }
    }, callback);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28104325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档