knex-tenanty
TypeScript icon, indicating that this package has built-in type declarations

0.0.1-beta.1 • Public • Published

knex-tenanty

Build Status

Knex middleware to handle multiple tenants.

You can run your application for several clients and the database will be created in different schemas.

Example usage

KnexTenanty(
  /* knex config object */,
  /* function to extract client-id from request object */
);

Sample project

https://github.com/brunolm/knex-mt

Setting up the middleware

import * as express from 'express';
 
import { KnexTenanty } from 'knex-tenanty';
import knexSettings from '../knexfile';
 
const app = express.Router();
 
const settings = knexSettings[process.env.NODE_ENV];
const extractClientId = (req) => req.headers['x-client-id'];
 
const middleware = KnexTenanty(settings, extractClientId);
app.use(middleware);
 
export default app;

Using knex to access the database

app.get('/', async (req, res) => {
  console.log('route /');
  const knex = req['knex'] as Knex.QueryBuilder;
 
  const values = await knex.from('test');
  res.send(values);
});
 
app.get('/insert', async (req, res) => {
  console.log('route /insert');
  const knex = req['knex'] as Knex.QueryBuilder;
 
  const values = await knex.insert({ name: req.query.name || 'bruno' }).into('test');
  res.send(values);
});

/knex-tenanty/

    Package Sidebar

    Install

    npm i knex-tenanty

    Weekly Downloads

    6

    Version

    0.0.1-beta.1

    License

    ISC

    Last publish

    Collaborators

    • brunolm