$inc of mongoose 防止负值

Mar*_*ane 3 javascript mongoose mongodb node.js

我的下面的代码可以很好地从用户在猫鼬中使用 $inc 扣除信用(它适用于增量,这很棒),但该值可能会变成负数,这是我不想要的,有什么选项可以阻止这种情况吗?

module.exports.deduct_credit = function(subscriber_email,callback){
  Users.findOneAndUpdate(
    {email: subscriber_email},
    {$inc:{credit:price_per_use}},
    {new: true})
    .exec(callback);
}
Run Code Online (Sandbox Code Playgroud)

abd*_*rik 5

您无法更改该$inc行为,但可以在之后执行检查点来停止它zero

module.exports.deduct_credit = function(subscriber_email, callback) {
  Users.findOneAndUpdate({
      email: subscriber_email,
      credit:{$gte: 0}
    }, {
      $inc: {
        credit: price_per_use
      }
    }, {
      new: true
    })
    .exec(callback);
}
Run Code Online (Sandbox Code Playgroud)

credit现在,如果该值大于该值,它将更新zero

希望这对你有用

  • $gt 是错误的。如果用户有 10 个信用,他使用了 10 个,则下一个增量不会发生,因为信用为 0,它不会工作,因为信用不大于 0。 (3认同)