-2

I keep getting the aforementioned error when I try to do a PUT request to update (error occurs at the line "item.save(function (err) ..." . Below is my PUT request code:

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' }); 
        }); 
    });     
}); 

Currently using Node, Express, and MongoDB.


Did some research, and finally realized save method is actually non existent in Mongoskin. Instead they use update (particularly updateById in the newer versions). PUT request works now with the code below (for 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'})

    }); 
}); 
4

1 回答 1

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'})

    }); 
}); 
于 2014-10-25T14:10:31.593 回答