Je vois deux façons simples possible de le faire:
Alternative # 1
Ajouter un dict statique avec les options que vous souhaitez appliquer à votre schéma Mongoose spécifique:
FooSchema.statics.options = {
...
};
maintenant, lorsque vous interrogez que vous devez faire:
Foo.find({}, null, Foo.options, function(err, foos) {
...
});
Alternative # 2
Mettre en oeuvre une enveloppe à la méthode de recherche qui utilise toujours vos options spécifiques:
FooSchema.statics.findWithOptions = function(query, next) {
var options = { ... };
this.find(query, null, options, next);
};
Et utiliser cette méthode comme ceci:
Foo.findWithOptions({}, function(err, foos) {
...
})
réutilisabilité
Pour rendre ces méthodes wrapper plus réutilisables, y ous pouvez faire un dict avec tous vos emballages:
var withOptionsWrappers = {
findWithOptions: function(query, next) {
this.find(query, null, this.options, next);
},
findByIdWithOptions: ...
findOneWithOptions: ...
...
};
Puisque nous faisons référence à this
il n'y aura pas de problème réutilisant cela. Et ont maintenant il être appliqué à tous vos schémas ainsi que votre schéma options spécifiques:
FooSchema.statics = withOptionsWrappers;
FooSchema.statics.options = {
...
};
BarSchema.statics = withOptionsWrappers;
BarSchema.statics.options = {
...
};
Merci pour la réponse, mais en fait je veux ajouter cette option à toutes les requêtes (trouver, findById, mise à jour, supprimer ...) donc je besoin de créer wrapper pour chaque requête pour chaque modèle! – eyadof
@eyadof a ajouté une section dans ma réponse qui suggère comment vous pouvez le réutiliser. –