Suche…


Middleware

Middleware (auch Pre- und Post-Hooks genannt) sind Funktionen, die während der Ausführung von asynchronen Funktionen die Kontrolle übernehmen. Die Middleware wird auf Schemaebene angegeben und ist für das Schreiben von Plugins nützlich. Mongoose 4.0 verfügt über zwei Arten von Middleware: Dokumenten-Middleware und Abfrage-Middleware. Dokumenten-Middleware wird für die folgenden Dokumentfunktionen unterstützt.

  • drin
  • bestätigen
  • sparen
  • Löschen

Die Abfrage-Middleware wird für die folgenden Modell- und Abfragefunktionen unterstützt.

  • Anzahl
  • finden
  • einen finden
  • findOneAndRemove
  • findOneAndUpdate
  • aktualisieren

Sowohl Dokumenten-Middleware als auch Abfrage-Middleware unterstützen Vor- und Nachhaken.


Vor

Es gibt zwei Arten von Vorhaken, seriell und parallel.

Seriennummer

Serien-Middleware werden nacheinander ausgeführt, wenn jede Middleware als nächstes anruft.

var schema = new Schema(..);
schema.pre('save', function(next) {
  // do stuff
  next();
});

Parallel

Parallele Middleware bietet eine feinere Flusskontrolle.

var Schema = neues 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);
});

Die Hook-Methode, in diesem Fall save, wird erst ausgeführt, wenn von jeder Middleware done aufgerufen wird.


Post-Middleware

Post-Middleware wird nach der Hooked-Methode ausgeführt und alle ihre Pre-Middleware sind abgeschlossen. Post-Middleware erhalten keine direkte Flusskontrolle, z. B. werden keine nächsten Callbacks weitergeleitet. Mit Post-Hooks können traditionelle Ereignis-Listener für diese Methoden registriert werden.

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);
});


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow