Cómo crear un middleware en Express.js: ejemplos prácticos

Cómo crear un middleware en Express.js: ejemplos prácticos

¿Cómo crear un middleware?

Los middleware personalizados son sencillos de crear debido que en realidad solo son una función.

Mediante una variable de referencia.

const miMiddleware = (req, res, next) => {
    ...
    next();
}

app.use(miMiddleware);

Directamente.

app.use((req, res, next) => {
    ...
    next();
});

La primera opción es mejor, ya que permite modularizar y desacoplar el uso del middleware.

¿Cómo pasar parámetros desde un middleware a una petición?

El objeto request es siempre el mismo a través de todo el ciclo de vida de una petición. Esto permite utilizar un patrón muy útil en el cual los desarrolladores pueden pasar datos desde un middleware a otro y a un request handler.

Por ejemplo, los desarrolladores pueden conectar a una base de datos en un middleware, y esta referencia se mantendrá disponible en los middleware subsecuentes y manejadores de rutas.

app.use((req, res, next()) => {
    database.connect('dsn', (err, db) => {
        ...
        req.db = db;
        next();
    });
});

app.use((req, res, next()) => {
    req.db.collection('usuarios').find({ active: true }, (err, app) => {
        next();
    }).
});