@microservice/multitenant
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.

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

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)
Downloads
Today 0
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 0
Dependencies (5)
Dev Dependencies (4)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |