Buscar..


Middleware

El middleware (también llamado gancho previo y posterior) es una función a la que se le pasa el control durante la ejecución de funciones asíncronas. Middleware se especifica en el nivel de esquema y es útil para escribir complementos. Mongoose 4.0 tiene 2 tipos de middleware: middleware de documentos y middleware de consulta. El middleware de documentos es compatible con las siguientes funciones de documentos.

  • en eso
  • validar
  • salvar
  • retirar

El middleware de consulta es compatible con las siguientes funciones de modelo y consulta.

  • contar
  • encontrar
  • Encuentra uno
  • findOneAndRemove
  • findOneAndUpdate
  • actualizar

Tanto el middleware de documentos como el middleware de consulta admiten enlaces anteriores y posteriores.


Pre

Hay dos tipos de ganchos de pre, serie y paralelo.

De serie

El middleware serial se ejecuta uno tras otro, cuando cada middleware llama a continuación.

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

Paralela

El middleware paralelo ofrece más control de flujo de grano fino.

var esquema = nuevo esquema (..);

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

El método enganchado, en este caso, guardar, no se ejecutará hasta que lo haga cada middleware.


Publicar middleware

el middleware posterior se ejecuta después de que el método enganchado y todo su middleware anterior se hayan completado. el middleware posterior no recibe directamente el control de flujo, por ejemplo, no se le pasa ninguna devolución de llamada siguiente o realizada. Los ganchos de publicación son una forma de registrar escuchas de eventos tradicionales para estos métodos.

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow