Sök…


middle~~POS=TRUNC

Middleware (även kallad pre- och post hooks) är funktioner som skickas kontroll under utförande av asynkrona funktioner. Middleware anges på schemanivå och är användbart för att skriva plugins. Mongoose 4.0 har två typer av mellanprogram: dokument mellanprogram och fråga mellanprogram. Dokument mellanprogram stöds för följande dokumentfunktioner.

  • i det
  • bekräfta
  • spara
  • ta bort

Frågestormware stöds för följande modell- och frågefunktioner.

  • räkna
  • hitta
  • hitta en
  • findOneAndRemove
  • findOneAndUpdate
  • uppdatering

Både dokument middleware och query middleware stöder pre- och postkrokar.


pre

Det finns två typer av förkrokar, seriella och parallella.

Serie

Seriell mellanprogram exekveras efter varandra när varje mellanprogram anropar nästa.

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

Parallell

Parallell medelvara erbjuder mer finkornig flödeskontroll.

var schema = nytt 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);
});

Den anknutna metoden, i detta fall spara, kommer inte att köras förrän det är klart för varje mellanprogram.


Skicka mellanvaror

post middleware körs efter den anslutna metoden och alla dess pre-middleware har slutförts. post middleware får inte direkt flödeskontroll, t.ex. skickas inga nästa eller gjort återuppringningar till det. postkrokar är ett sätt att registrera traditionella evenemangslyssnare för dessa metoder.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow