Compose express middlewares

Function composition is a great tool, to allow to create a more isolated function with clear responsibility and single purpose. Function composition allows combining these functions to create a more complex one.

This pattern can also be used to express middlewares. This allows having more isolated middlewares, easier to test. And to expose a composed middleware that can guarantee that a middleware is going to be called after another one.

const express = require('express');
function middleware1(req, res, next) {
req.var1 = logic1();
function middleware2(req, res, next) {
req.var2 = logic2(req.var1);
function middleware3(req, res, next) {
req.var3 = logic3(req.var1, req.vqr2);
const myFinalMiddleware = express.Router().use(middleware1, middleware2, middleware3);

And you can use your middleware after like any other middleware

const app = express();

This tips allow you to have thinner middleware with single responsability.