如何禁止使用相同的objectId添加mongodb中已存在的较小数字?

时间:2018-05-10 15:19:48

标签: node.js express mongoose

如果我有这样的VoterTurnout集合:

_id: ObjectId("5ae4e704b7bccf133c24f0b8")
electoralUnit:ObjectId("5ab906612f30fe23dc592591")
turnoutByHour:"08:00"
voterTurnout:11
safeVoter:1
date:2018-04-28T21:26:28.678Z
__v:0

如何禁止下一个输入,即09 :: 00中的字段turnoutByHour,不能将voterTurnout字段小于11,但只有当electoranUnit是相同的id时才会出现?

我使用if语句对事物进行了成像:

if (req.body.voterTurnout < VoterTurnouts.findOne({voterTurnout : req.params.voterTurnout }))

但无法弄清楚如何在该逻辑中添加和turnoutByHour和electoranUnit ......?

我已经有很多if语句在路由中有错误消息:

router.post('/', (req, res)=>{
    let errors = [];

    if (!req.body.electoralUnit) {
      errors.push({message: 'Must chooose Electoral Unit!'});
    }
    if (!req.body.voterTurnout) {
      errors.push({message: 'Must add Voter Turnout!'});
    }

    if (errors.length > 0) {
      res.render('home/voterTurnouts/index', {
        errors: errors,
        electoralUnit: req.body.electoralUnit,
        voterTurnout: req.body.voterTurnout
      });
    } else {
      VoterTurnout.findOne({_id: req.params.id}).then(voterTurnout=>{
          const newVoterTurnout = VoterTurnout({
            electoralUnit: req.body.electoralUnit,
            turnoutByHour: req.body.turnoutByHour,
            voterTurnout: req.body.voterTurnout,
            safeVoter: req.body.safeVoter
          });
          newVoterTurnout.save().then(savedVoterTurnout=>{
            ElectoralUnit.find({}).then(electoralUnits=>{
              res.redirect('/voterTurnouts');
            });
          }).catch(errors=>{
            req.flash('error_message', 'Hours are already added with that Electoral Unit!');
            res.redirect('/voterTurnouts');
          });
      });
    }
});

所以我只需要添加这个......

0 个答案:

没有答案