Multi-tenancy — serve multiple customers from one application.
1// Strategy 1: Subdomain-based2app.use((req, res, next) => {3 const host = req.hostname;4 req.tenant = host.split(".")[0]; // "acme" from "acme.example.com"5 next();6});78// Strategy 2: Header-based9app.use((req, res, next) => {10 req.tenant = req.headers["x-tenant-id"];11 next();12});1314// Tenant-aware database15class TenantDB {16 constructor() {17 this.pools = new Map();18 }1920 getPool(tenantId) {21 if (!this.pools.has(tenantId)) {22 this.pools.set(tenantId, new Pool({23 database: `tenant_${tenantId}`,24 ...baseConfig,25 }));26 }27 return this.pools.get(tenantId);28 }29}3031// Middleware32app.use((req, res, next) => {33 req.db = tenantDB.getPool(req.tenant);34 next();35});3637app.get("/products", async (req, res) => {38 const products = await req.db.query("SELECT * FROM products");39 res.json(products);40});
Strategies: