TypeError:Object#<object>没有方法&#39; save&#39; </object>

时间:2014-10-25 12:23:41

标签: node.js mongodb express mongoskin

当我尝试执行PUT请求更新时,我不断收到上述错误(错误发生在行#34; item.save(函数(错误)...&#34;。以下是我的PUT请求代码:

outer.put('/alltweets/:id', function(req, res){
    var db = req.db; 
    db.collection('tweetdb').findById(req.params.id, function (err, item){
        if (err) 
            res.send(err); 
        item.tweet = req.body.tweet; 
        item.date = req.body.date; 

        //save the item 
        item.save(function(err) {
            if(err) 
                res.send(err); 

            res.json({message: 'item updated' }); 
        }); 
    });     
}); 

目前使用Node,Express和MongoDB。

1 个答案:

答案 0 :(得分:0)

做了一些研究,最后意识到保存方法实际上并不存在于Mongoskin中。相反,他们使用更新(特别是在较新版本中的updateById)。 PUT请求现在使用下面的代码(对于Mongoskin):

router.put('/alltweets/:id', function(req, res){
    var db = req.db; 
    db.collection('tweetdb').updateById(req.params.id, {$set:req.body}, {safe: true, multi: false}, function(e, result){

    if (e) return next (e); 
    res.send((result===1)?{msg:'success'}:{msg:'error'})

    }); 
});