基于用户环回的dynamic数据库连接

我正在评估Loopback为我们公司正在build设的新平台。 我设置了一个testing项目,尽pipe学习曲线,我绝对爱循环框架。 我似乎无法想象的一个交易断路器是如何根据请求dynamic连接到数据库,基于用户和客户请求数据。 我们的遗留系统为每个客户和每个客户所在地(每个客户有3个地点,总共有4个数据库)提供一个数据库,而且不会立即迁移数据结构。 这意味着当发出请求时,我们需要连接到该客户数据库,获取数据,然后断开连接。
任何回环人知道这是可能的?

考虑你在datasources.json有下面的内容

 "db1": { "name": "db1", "host": "localhost", "database": "customers_one_db", "password": "", "user": "", "connector": "mysql" }, "db2": { "name": "db2", "host": "localhost", "database": "customers_two_db", "password": "", "user": "", "connector": "mysql" } 

像这样创build一个中间件:

 //middlewares.json "inital:after": { ... "./middlewares/dsChanger": {} ... } //middlewares/dsChanger.js var app = require('../server'); module.exports = function(options) { return function(req, res, next) { if(req.headers.customerType === 'blah'){ app.models.Customer.attachTo(app.datasources.db2); }else { app.models.Customer.attachTo(app.datasources.db1); } next(); } } 

免责声明:我以前没有尝试过

UPDATE

为了在代码中创build数据源,你可以这样做:

 var DataSource = require('loopback-datasource-juggler').DataSource; var mysqlConnector = require('loopback-connector-mysql'); var ds1 = new DataSource(mysqlConnector, { host: 'localhost', database: 'customers_one_db', username: '', password: '' }); 

别忘了创build另一个中间件,把它放在最后一个中间件阶段, disconnect数据源。

 ds1.disconnect(function(err, result){});