如何通过update()使用猫鼬验证

时间:2018-12-07 11:58:07

标签: mongodb validation express mongoose schema

我有一个我在哪里有字段的模式,类型是一个数字。我将min设置为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和必需的功能不起作用。这是与DB交互的函数。

User.findOneAndUpdate({email:email},{coins},(err,success)=>{
                if(err) return err;
                nsp.in(room).emit('takeCoin', { coins });
            });

我需要添加一些功能,当硬币数量为负值时,将硬币更改为零。谢谢

1 个答案:

答案 0 :(得分:0)

我不确定下面的代码能否正常工作,但是算法应该正确。 因此,您必须使用pre方法。

   UserSchema.pre('save', function(next) {
    var user = this;

    if (user.coins < 0) {
        user.coins = 0;
        next();
    } else {
        next();
    }
});

代码应该在您的模型中。