值被添加到数据库input结束,而不是更新相关的列

我目前正在使用MongoDB,Express和Angular,并遇到了一个问题。 当我尝试更新数据库中的列数据时,它会在最后添加。 下面是代码。

function addSupporters(candidate){ Supporter.find({"name": "Susan Sullivan"},function(err,supporter){ supporter.candidateName = candidate; }) } 

这段代码更新candidateName给他们支持的人。 这是从下面的方法调用。

 router.incrementUpvotes = function(req, res) { Candidate.findById(req.params.id, function(err,candidate) { if (err) res.send(err); else { addSupporters(candidate.name); candidate.support += 1; candidate.save(function (err) { if (err) res.send(err); else res.json({ message: 'Candidate Upvoted!', data: candidate}); }); } }); } 

当一个人上传或“支持”他们,并将候选人名称添加到支持者时, incrementUpvotes调用addSupporters(candidate.name)

我得到的输出是…

 [ { _id: 58189c8b3273e81568f0f918, name: 'Susan Sullivan', email: 'S.Sullivan@hotmail.com', candidateName: '' }, candidateName: 'Susan Miller' ] 

第二个参数似乎是一个数组

 function addSupporters(candidate){ Supporter.find({"name": "Susan Sullivan"},function(err,supporters){ for (i = 0; i < supporters.length; i++) { supporters[i].candidateName = candidate; } }) } 

不幸的是,我没有名声赞扬任何人:/但是这是对我有效的答案。

 function addSupporters(candidate){ Supporter.find({"name": "Susan Sullivan"},function(err,supporter){ supporter[0].candidateName = candidate; supporter[0].save(); }); } 
  router.incrementUpvotes = function(req, res) { var conditions = { id: req.params.id } , update = { $inc: { support : 1 }} , options = { multi: true }; Candidate.update(conditions, update, options, function (err) { if (err) res.send(err); else res.json({ message: 'Candidate Upvoted!', data: candidate}); }); } 

希望这会有所帮助