Javascript $inc猫鼬防止出现负值
我下面的代码可以很好地从mongoose中使用$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}
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。