Можно ли отправить конкретные параметры в mongose ​​запрос, чтобы избежать запроса промежуточного программного обеспечения? - PullRequest
0 голосов
/ 04 ноября 2019

Я не знаю, как оставаться кратким, так что ... Я изучаю 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();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...