Я не знаю, как оставаться кратким, так что ... Я изучаю Express & Mongodb, и у меня есть эта проблема: у меня есть одна коллекция для моих пользователей со схемой, подобной этой:
name:{
type: String
},
email:{
type: String
},
active:{
type: Boolean,
default:false,
select:false
}
Теперь, чтобы установить для активного поля значение true, мне нужно выбрать документ на основе электронной почты пользователя. как это:
const Users = require(./models/users');
const user = await Users.findOne({
email:"example@domain.com"
}).select("+active");
Проблема в том, что в моей схеме у меня есть промежуточное программное обеспечение для запросов, чтобы избежать выбора неактивных пользователей.
mySchema.pre(/^find/, function(next) {
this.find({ active: true});
next();
});
Мой вопрос: возможно лиизбежать вызова промежуточного программного обеспечения в некоторых конкретных случаях? Например, если я хочу выбрать пользователей, которые не активны? Или же можно посылать определенные параметры промежуточному программному обеспечению через мои контроллеры?
Примечание: код прекрасно работает, когда я отключаю промежуточное программное обеспечение, но мне нужно это промежуточное программное обеспечение.
Я нашел одно решение в кодерволле. com, который работает отлично, но проблема в том, что он сохраняет дополнительное поле в моей коллекции, и мне не нужно это поле
const mySchema = new Schema({
...
hookEnabled: {
type: Boolean,
default: true
}
});
А затем в модели
mySchema.pre('/^find/', function(next, done){
if(this.hookEnabled){
this.find({ active: true});
}
next();
});