microservice/multitenant ===================
Last updated 4 years ago by microservice .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @microservice/multitenant 
SYNC missed versions from official npm registry.


express middleware for multitenant achitecture


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

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


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
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
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);

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)

Current Tags

  • 2.3.0                                ...           latest (4 years ago)

5 Versions

  • 2.3.0                                ...           4 years ago
  • 2.1.0                                ...           5 years ago
  • 2.0.0                                ...           5 years ago
  • 1.1.0                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
Maintainers (1)
Today 0
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 0
Dependencies (5)
Dev Dependencies (4)
Dependents (0)

Copyright 2014 - 2016 © taobao.org |