Я вижу два возможных простых способов сделать это:
Альтернатива # 1
Добавление статического Dict с параметрами, которые вы хотите применить к конкретной Mongoose схеме:
FooSchema.statics.options = {
...
};
Теперь, когда вы запрашиваете, что нужно сделать:
Foo.find({}, null, Foo.options, function(err, foos) {
...
});
Вариант № 2
Реализовать оболочку для метода находят, что всегда использует свои специфические параметры:
FooSchema.statics.findWithOptions = function(query, next) {
var options = { ... };
this.find(query, null, options, next);
};
и использовать этот метод, как так:
Foo.findWithOptions({}, function(err, foos) {
...
})
переиспользуемости
Чтобы сделать эти методы обертки более многоразовыми, y ожно сделать Dict со всеми вашими оберток:
var withOptionsWrappers = {
findWithOptions: function(query, next) {
this.find(query, null, this.options, next);
},
findByIdWithOptions: ...
findOneWithOptions: ...
...
};
Поскольку мы ссылаемся на this
не будет никаких проблем повторно использовать это. И теперь это можно применить ко всем вашим схемам вместе с вашей схемой конкретными вариантами:
FooSchema.statics = withOptionsWrappers;
FooSchema.statics.options = {
...
};
BarSchema.statics = withOptionsWrappers;
BarSchema.statics.options = {
...
};
Спасибо за ответ, но на самом деле я хочу, чтобы добавить эту опцию для всех запросов (найти, findById, обновление, удаление ...), поэтому мне нужно, чтобы создать оболочку для каждого запроса для каждой модели! – eyadof
@eyadof добавил раздел в моем ответе, в котором дается предложение о том, как его можно повторно использовать. –