Ricerca…


middleware

Il middleware (chiamato anche pre e post hook) sono funzioni che vengono passate al controllo durante l'esecuzione di funzioni asincrone. Il middleware è specificato a livello di schema ed è utile per scrivere plugin. Mongoose 4.0 ha 2 tipi di middleware: middleware di documenti e middleware di query. Il middleware dei documenti è supportato per le seguenti funzioni del documento.

  • dentro
  • convalidare
  • salvare
  • rimuovere

Il middleware delle query è supportato per le seguenti funzioni Modello e Query.

  • contare
  • trova
  • trova uno
  • findOneAndRemove
  • findOneAndUpdate
  • aggiornare

Sia il middleware documentale che il middleware delle query supportano gli hook pre e post.


Pre

Esistono due tipi di pre-aggancio, seriale e parallelo.

Seriale

Il middleware seriale viene eseguito uno dopo l'altro, quando ogni middleware chiama in seguito.

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

Parallelo

Il middleware parallelo offre un controllo del flusso a grana più fine.

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

Il metodo uncinato, in questo caso save, non verrà eseguito finché non viene chiamato done da ogni middleware.


Middleware post

i middleware post vengono eseguiti dopo il metodo hooked e tutti i relativi middleware pre completati. il middleware post non riceve direttamente il controllo di flusso, ad esempio non viene passato alcun callback successivo o fatto. post hook sono un modo per registrare i listener di eventi tradizionali per questi metodi.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow