Socket
Socket
Sign inDemoInstall

@microservice/multitenant

Package Overview
Dependencies
11
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @microservice/multitenant

microservice/multitenant ===================


Version published
Weekly downloads
2
Maintainers
1
Install size
374 kB
Created
Weekly downloads
 

Readme

Source

microservice/multitenant

express middleware for multitenant achitecture

Usage:

var express = require('express');
var multitenant = require('multitenant');
var app = express();

app.use(multitenant({...})); // pass in an options object

Options

tenants (mandatory)

It can be an object or a function, and in both case should provide the information relative to a given tenant.

The object's keys has to be the same as the tenant's ID.

tenants: {
  foo: {...}, // tenant of ID 'foo'
  bar: {...}  // tenant of ID 'bar'
}

The function is has a tenant ID and a callback as arguments.

tenants: function(tenantId, done) {
  var tenantInformation = getTenantInformation(tenantId); // some code to load the tenant information
  done(tenantInfomation);
}
tenantId (optional)

Function which parses the request object and provides a callback with the tenantId. It defaults to the subdomain.

tenantId: function(request, done) {
  var tenantId = extractTenantIdFromRequest(request); // some code to extract the tenantId from the request
  done(tenantId);
}
onNotFound (optional)

Called when the tenant cannot be found with the given tenantId. It is the last function of the middleware chain. By default it sends a 400 error

onNotFound: function(request, response, next) {
  response.send('some error message');
}
onNoTenantKey (optional)

Called when the tenantId cannot be determined. It is the last function of the middleware chain. By default it sends a 400 error

onNoTenantKey: function(request, response, next) {
  response.send('some error message');
}
connectionStrategy (optional)

This is where you initialize a connection to a database. It takes two arguments: the tenant information object, and a callback. Arguments provided to the callback will be assigned to request.tenantConnection.

connectionStrategy: function(tenantInformation, done) {
  var connection = initializeDatabaseConnection(tenantInformation);
  done(connection);
}

Alternatively, it can be an object whose values are either functions or values, which are assigned to the req object using their respective key.

connectionStrategy: {
  foo: 'bar', // sets req.foo to 'bar'
  baz: function(tenant, callback) {
    callback(null, 'baz'); // sets req.baz to 'baz' - first argument is an error which will propagate to next(err)
  }
}

Keywords

FAQs

Last updated on 26 Feb 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc