Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $inc猫鼬防止出现负值_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript $inc猫鼬防止出现负值

Javascript $inc猫鼬防止出现负值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我下面的代码可以很好地从mongoose中使用$inc的用户那里扣除积分(这对增量很有用),但值可能会变为负值,这是我不想要的,有任何选项可以防止吗 module.exports.deduct_credit = function(subscriber_email,callback){ Users.findOneAndUpdate( {email: subscriber_email}, {$inc:{credit:price_per_use}}, {new: true}

我下面的代码可以很好地从mongoose中使用$inc的用户那里扣除积分(这对增量很有用),但值可能会变为负值,这是我不想要的,有任何选项可以防止吗

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

您不能更改
$inc
行为,但可以在
归零后执行检查点以停止该行为

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);
}
现在,如果
credit
值大于
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);
}

希望这对您有用

您不能更改
$inc
行为,但您可以在
归零后执行检查点来停止它

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);
}
现在,如果
credit
值大于
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);
}

希望这对您有用

您所说的
是什么意思,但值可能变为负值
?你想限制在哪一个地方?@abdulbarik如果我的当前值是0,而我的每次使用价格是-10,那么它将是-10。信用不应为-10,最小值为0。如何限制这种情况的发生?您所说的
是什么意思,但该值可能变为负值?你想限制在哪一个地方?@abdulbarik如果我的当前值是0,而我的每次使用价格是-10,那么它将是-10。信用不应为-10,最小值为0。如何限制这种情况发生?为什么不
$gte
?说用户有10个,他用了10个,给他加上fom 0的能力还是可以的。是吗?是的,你可以使用它,只要给你一个处理问题的方法,你就可以按照你的要求使用它,所以它不是$gt,而是$gte?两者都是正确的。它只是
小于
小于或等于
$gt是错误的。如果用户有10个积分,他使用了10,下一个增量将不会发生,因为积分为0,因为积分不大于0。为什么不
$gte
?说用户有10个,他用了10个,给他加上fom 0的能力还是可以的。是吗?是的,你可以使用它,只要给你一个处理问题的方法,你就可以按照你的要求使用它,所以它不是$gt,而是$gte?两者都是正确的。它只是
小于
小于或等于
$gt是错误的。如果用户有10个信用,他使用了10,下一个增量将不会发生,因为信用是0,它将不起作用,因为信用不大于0。