2016-10-10 75 views
0

我下面的代碼工作得很好扣除信貸從貓鼬使用$用戶INC(它的增量是很大的工作),但值可以變成負數這是我做的不想要,有什麼選擇來防止呢?

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

你是什麼意思',但該值可以成爲negative'?你想在哪個地方限制? – abdulbarik

+0

@abdulbarik如果我的當前值是0並且我的price_per_use是-10,那將是-10。信用不應該是-10,最小值是0.如何限制發生? –

回答

0

你不能改變$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); 
} 

現在停止它如果credit值大於zero

希望這將更新這可以爲你工作

+0

爲什麼不是'$ gte'?說用戶有10個,他用了10個,還是可以給他權力添加fom 0.對嗎? –

+0

是的,你可以使用只是給你一個方法來處理你的問題,你可以使用它在你的要求方式 – abdulbarik

+0

所以它不是$ GT,但$ gte? –