mongoose
mangouste pré et post middleware (crochets)
Recherche…
Middleware
Les middleware (également appelés pré et post hooks) sont des fonctions qui passent le contrôle lors de l'exécution de fonctions asynchrones. Le middleware est spécifié au niveau du schéma et est utile pour écrire des plugins. Mongoose 4.0 dispose de 2 types de middleware: le middleware de document et le middleware de requête. Le middleware de document est pris en charge pour les fonctions de document suivantes.
- init
- valider
- enregistrer
- retirer
Le middleware de requête est pris en charge pour les fonctions Model et Query suivantes.
- compter
- trouver
- trouverOne
- findOneAndRemove
- findOneAndUpdate
- mettre à jour
Le middleware de document et le middleware de requête prennent en charge les pré et post-hooks.
Pré
Il existe deux types de pré-crochets, série et parallèle.
En série
Les middleware série sont exécutés les uns après les autres, lorsque chaque middleware appelle ensuite.
var schema = new Schema(..);
schema.pre('save', function(next) {
// do stuff
next();
});
Parallèle
Le middleware parallèle offre un contrôle de flux plus fin.
var schema = new Schema (..);
// `true` means this is a parallel middleware. You **must** specify `true`
// as the second parameter if you want to use parallel middleware.
schema.pre('save', true, function(next, done) {
// calling next kicks off the next middleware in parallel
next();
setTimeout(done, 100);
});
La méthode accrochée, dans ce cas enregistrer, ne sera pas exécutée tant que chaque logiciel intermédiaire n’a pas terminé.
Post middleware
post middleware sont exécutés après la méthode hooked et tous ses pré-middleware ont été complétés. post middleware ne reçoivent pas directement le contrôle de flux, par exemple, aucun callback suivant ou fini ne lui est transmis. Les post-hooks permettent d'enregistrer les programmes d'écoute traditionnels pour ces méthodes.
schema.post('init', function(doc) {
console.log('%s has been initialized from the db', doc._id);
});
schema.post('validate', function(doc) {
console.log('%s has been validated (but not saved yet)', doc._id);
});
schema.post('save', function(doc) {
console.log('%s has been saved', doc._id);
});
schema.post('remove', function(doc) {
console.log('%s has been removed', doc._id);
});