2015-04-23 26 views
6

Geridönüşüm uygulamasında çok düzelme uygulamak istiyorum. Şu anda, ben istek üzerine etki alanlarına dayalı olarak, her istek için mongodb sunucusunda farklı veritabanlarına işaret etmek için veri kaynaklarımı yeniden tanımlamak için middleware kullanmaya çalışıyorum. Kod çalışır, ancak aslında veri kaynağını değiştirmiyor gibi görünmektedir. Bunun yerine, her zaman veri kaynaklarında tanımlanmış olanı kullanır.sonun.Loopback Çoklu Veritabanı Veritabanı Değişimi

Şu an işte yaptığım şey bu. Tüm modellerim "my_db" ye başvurur ve her kiracı için mongo sunucumda bir veritabanı olmasını isterim.

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

     }); 

herkes herhangi bir fikir var mı? Bu çok kiracılığın aptalca bir yolu mu?

Teşekkürler!

+1

yukarıdaki kodunuzda 'tenant' nedir? – jakerella

+0

Hiç bir çözüm buldunuz mu? –

cevap

1

Bu projeyi yapıyorum. Ben bir alternatifim.

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

+0

Paulo ben bu projenizi test ettik: 'kıvrılıp --bilgi "username = paulomcnally1 & mesajı = Merhaba dünya" http://127.0.0.1:4000/demo1/tweets & curl --bilgi "username = paulomcnally2 & mesajı = Merhaba dünya" http : //127.0.0.1: 4000/demo2/tweets & '. Her iki tweet, demo2 veritabanında yazılır. Eşzamanlılık ile ilgili bir sorun var mı, yoksa yanlış bir şey mi yapıyorum? – Musma