2017-04-17 82 views
0

我想增加voteCount由1當用戶選擇一個特定的選項。數據是這樣的 -貓鼬:findByIdAndUpdate不更新文件

{ 
    "_id": { 
     "$oid": "58f2ef61af2c5c068c2f1d7a" 
    },   
    "pollName": "Who is your favourite cricketer ?",   
    "options": [ 
     { 
      "name": "Dhoni", 
      "_id": { 
       "$oid": "58f2ef61af2c5c068c2f1d7d" 
      }, 
      "voteCount": 10 
     }, 
     { 
      "name": "Kohli", 
      "_id": { 
       "$oid": "58f2ef61af2c5c068c2f1d7c" 
      }, 
      "voteCount": 6 
     } 
    ], 
    "__v": 0 
} 

我想這一點 -

// req.body.votedFor is coming fine. 
PollModel.findByIdAndUpdate(req.session.pollId, {$inc: { options: {name: req.body.votedFor, voteCount : 1 } }}, {new: true}, function(err, doc){ 
    if(err){ 
     console.log("Something wrong when updating data! "+err); 
    } 
    console.log(doc); 
    }); 

這是不更新voteCount和我得到這個消息 -

東西錯了,當更新數據! MongoError:不能與非數字的參數增量:{選擇:{voteCount:1,名稱: 「縱帆船」}}
不確定

我在哪裏做錯了嗎? 請幫忙

+0

你是否嘗試從回調函數讀取錯誤參數?我認爲這會幫助你確定一個問題。 – Dmitry

+0

@Dmitry問題出現在{$ inc ...}中。但如何去選擇名稱?請指導。 –

+0

@RiyaSaxena得到錯誤,意外的標識符$ inc: –

回答

0

更新了一點@Veeram解決方案。這是工作代碼 -

PollModel.findOneAndUpdate({"_id":req.session.pollId, "options.name": req.body.votedFor}, {$inc:{"options.$.voteCount":1} }, {new: true}, function(err, doc){ 
    if(err){ 
     console.log("Something wrong when updating data! "+err); 
    } 
    console.log(doc); 
    res.send(doc); 
    }); 
0
if(req.body.votedFor && req.body.votedFor!='') 
    setObj['options.name'] = req.body.votedFor; 
qobj['options.voteCount']=1; 
var updateObj = {}; 
updateObj['$set'] = setObj; 
updateObj['$inc'] = qobj; 
PollModel.findByIdAndUpdate({"_id":req.session.pollId},updateObj, {new: true}, function(err, doc){ 
    if(err){ 
     console.log("Something wrong when updating data! "+err); 
} 
console.log(doc); 

});

+0

得到這個錯誤 - MongoError:不能使用該部分(options.name的選項)遍歷元素 –