mongoose
mangoest voor en na middleware (haken)
Zoeken…
middleware
Middleware (ook wel pre- en post-hooks genoemd) zijn functies die tijdens de uitvoering van asynchrone functies worden doorgegeven. Middleware wordt opgegeven op schemaniveau en is handig voor het schrijven van plug-ins. Mongoose 4.0 heeft 2 soorten middleware: document middleware en query middleware. Document middleware wordt ondersteund voor de volgende documentfuncties.
- in het
- validate
- opslaan
- verwijderen
Query-middleware wordt ondersteund voor de volgende model- en queryfuncties.
- tellen
- vind
- vind een
- findOneAndRemove
- findOneAndUpdate
- bijwerken
Zowel document middleware als query middleware ondersteunen pre- en posthaken.
Pre
Er zijn twee soorten voorhaken, serieel en parallel.
serie-
Seriële middleware worden na elkaar uitgevoerd, wanneer elke middleware de volgende keer roept.
var schema = new Schema(..);
schema.pre('save', function(next) {
// do stuff
next();
});
Parallel
Parallelle middleware biedt een fijnere korrelregeling.
var schema = nieuw 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);
});
De gekoppelde methode, in dit geval opslaan, wordt pas uitgevoerd nadat elke middleware is voltooid.
Post middleware
post-middleware worden uitgevoerd nadat de gekoppelde methode is voltooid en alle pre-middleware is voltooid. post middleware ontvangt niet direct flow control, bijv. er worden geen volgende of uitgevoerde callbacks doorgegeven. post hooks zijn een manier om traditionele evenementluisteraars voor deze methoden te registreren.
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);
});