我有一个模式,其中有一个字段,类型是一个数字。我设置了最小值0,但在更新后它变成了负数。这是我的模式。
let balanceChecker = (v)=>{
if(v<0){
return v=0;
}else{
return true;
}
}
const UserSchema = mongoose.Schema ({
email: {type: String,required: true,unique:true},
password: {type: String,required: true,unique:true,validate: passwordValidators},
coins:{type:SchemaTypes.Double,default:1000,min:0,required:balanceChecker}
});
每次点击后,我的应用程序生成从-50到50的随机数。min:0,所需函数不起作用。这是我与数据库交互的功能。
User.findOneAndUpdate({email:email},{coins},(err,success)=>{
if(err) return err;
nsp.in(room).emit('takeCoin', { coins });
});
我需要添加功能,当硬币数量为负值时,将硬币更改为零。感谢
我不确定下面的代码是否有效,但算法应该是正确的。所以你必须使用pre
方法。
UserSchema.pre('save', function(next) {
var user = this;
if (user.coins < 0) {
user.coins = 0;
next();
} else {
next();
}
});
代码应该在您的模型中。