mongoose
mangosta pre y post middleware (ganchos)
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);
});