У меня есть коллекция mongodb «Пользователи» с полями «Имя», «Электронная почта», «Активные».Я хочу добавить подтверждение, что для каждого документа электронная почта должна быть уникальной.Однако, если документ недействителен, т. Е. Active имеет значение false, электронное письмо может быть принято.
Вот модель
email: { type: String, validate: {
validator: function(v) {
return new Promise((resolve, reject)=> {
console.log("validating email")
const UserModel = mongoose.model('User');
UserModel.find({email : v, active: true}, function (err, docs)
{
if (!docs.length){
resolve();
}else{
console.log('user exists: ',v);
reject(new Error("User exists!"));
}
});
})
},
message: '{VALUE} already exists!'
}
},
name: {
type: String,
required: true
},
active: {
type: Boolean,
default: true
}
Проблема в том, что когда я делаю какие-либо обновления в этой модели, эта проверканазывается.Поэтому, если я обновляю имя, то также вызывается эта проверка, и она выдает ошибку, что электронная почта уже существует.
Как добавить проверку в поле электронной почты, чтобы, если кто-то добавляет новую запись в базу данных или обновляет ее по электронной почтепроверяет в базе данных, если существующий пользователь имеет тот же идентификатор электронной почты и активен?