【问题标题】:I can't update entry for a particular document in my MongoDB collection我无法更新 MongoDB 集合中特定文档的条目
【发布时间】:2019-12-06 19:39:26
【问题描述】:

该函数从数据库中读取所有内容,但我无法更改数据库中我的 Voters 模型中“hasVoted”字段的值。

我想将值从 false 更改为 true。设置 data.hasVoted = true 后,我尝试了 console.log(data.hasVoted),它返回 true,但是当我检查我的数据库时,该值仍然是 false。

req.app.db.models.Voter.findOne({ cnic: req.body.cnic }, function(err, data) {
  if (
    data.name == req.body.name &&
    data.cnic == req.body.cnic &&
    data.voterid == req.body.voterid &&
    data.hasVoted == false
  ) {
    data.hasVoted = true;

    var voteUrl = "/votingpage";

    var votePayload = {
      name: req.body.name,
      cnic: req.body.cnic,
      voterid: req.body.voterid,
      constituency: data.constituency
    };

    req.app.db.models.Voter.updateOne(
      { cnic: votePayload.cnic },
      { $set: { hasVoted: true } }
    );

    res.cookie("votePayload", votePayload);
    data.hasVoted = true;
    console.log(data.hasVoted);
    //return res.redirect(voteUrl);
  } else {
    res.redirect("/Votenotallowed");
  }
});

【问题讨论】:

  • 我也试过了,但没有效果:req.app.db.models.Voter.updateOne({"cnic":votePayload.cnic},{$set:{hasVoted:true}});

标签: node.js mongodb express mongoose


【解决方案1】:

您可以执行以下代码。

req.app.db.models.Voter.findOne({ "cnic": req.body.cnic }, function (err, data) {
    if (data.name == req.body.name && data.cnic == req.body.cnic && data.voterid == req.body.voterid && data.hasVoted == false) {
        data.hasVoted = true;
        var voteUrl = '/votingpage';
        var votePayload = {
            name: req.body.name,
            cnic: req.body.cnic,
            voterid: req.body.voterid,
            constituency: data.constituency
        }

        req.app.db.models.Voter.updateOne({ "cnic": votePayload.cnic }, { $set: { hasVoted: true } }, { upsert: true, new: true }).exec((err, res) => {
            if (err) {
                res.send(500)
            } else {
                res.cookie('votePayload', votePayload);
                data.hasVoted = true;
                console.log(data.hasVoted);
                //return res.redirect(voteUrl);
            }
        });
    } else {
        res.redirect('/Votenotallowed')
    }
});});

【讨论】:

    【解决方案2】:

    尝试在查询中提供选项

        req.app.db.models.Voter.updateOne({"cnic":votePayload.cnic},{$set:{hasVoted:true}} , {upsert: true , new: true}).exec((err , updatedLog)=>{
         if(err){
          console.log(err);
         }
         else{
           console.log(updatedLog);
         }
    
       });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2020-09-26
      相关资源
      最近更新 更多