Как использовать проверку mongoose с update () - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть схема, где у меня есть поле, тип которого является числом. Я устанавливаю мин 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. мин: 0 и требуемая функция не работает. Вот моя функция, которая взаимодействует с БД.

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

Мне нужно добавить функциональность, которая изменит монеты на ноль, когда числа монетбудет отрицательное значение. Спасибо

1 Ответ

0 голосов
/ 07 декабря 2018

Я не уверен, что приведенный ниже код будет работать или нет, но алгоритм должен быть правильным.Поэтому вы должны использовать метод pre.

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

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

Код должен быть в вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...