2015-04-23 7 views
6

Ich möchte Multitenancy in meiner Loopback-App implementieren. Im Moment versuche ich, Middleware zu verwenden, um meine Datenquellen neu zu definieren, um auf verschiedene Datenbanken auf meinem mongodb-Server für jede Anfrage zu zeigen, basierend auf der Domäne, die Anfrage. Der Code wird ausgeführt, scheint jedoch die Datenquelle nicht zu ändern. Stattdessen verwendet es immer das in meiner Datei "datasources.json" definierte.Loopback Multitenancy Database Swap

Gerade jetzt, das ist was ich tue. Alle meine Modelle verweisen auf "meine_db" und ich möchte für jeden Mieter eine Datenbank auf meinem mongo-Server haben.

var dataSourceObj = { 
     my_db:{ 
      url: process.env.MONGOLAB_URI, 
      connector: "mongodb", 
      name: "my_db", 
      database: tenant 
     } 
     } 

     Object.keys(dataSourceObj).forEach(function(dataSource) { 

     app.dataSources[dataSource].adapter.settings = dataSourceObj[dataSource]; 
     app.dataSources[dataSource].adapter.clientConfig = dataSourceObj[dataSource]; 
     app.dataSources[dataSource].settings = dataSourceObj[dataSource]; 
     app.dataSources[dataSource].connector.settings = dataSourceObj[dataSource]; 
     app.dataSources[dataSource].connector.clientConfig = dataSourceObj[dataSource]; 

     }); 

Hat jemand irgendwelche Ideen? Ist das eine alberne Art, Multi-Tenancy zu machen?

Danke!

+1

Was ist 'tenant' im Code oben? – jakerella

+0

Haben Sie jemals eine Lösung gefunden? –

Antwort

1

Ich mache dieses Projekt. Ich habe eine Alternative.

https://github.com/paulomcnally/loopback-example-multitenant

+0

Paulo Ich habe Ihr Projekt mit diesem getestet: 'curl --data "Benutzername = paulomcnally1 & Nachricht = Hallo Welt" http://127.0.0.1:4000/demo1/tweets & curl --data "Benutzername = paulomcnally2 & Nachricht = Hallo Welt" http : //127.0.0.1: 4000/demo2/tweets & '. Beide Tweets wurden auf Demo2-Datenbank geschrieben. Gibt es ein Problem mit Nebenläufigkeit oder mache ich etwas falsch? – Musma