2015-04-23 16 views
6

Tôi muốn triển khai đa nhiệm trong ứng dụng loopback của mình. Ngay bây giờ, tôi đang cố gắng sử dụng phần mềm trung gian để xác định lại nguồn dữ liệu của mình để trỏ đến các cơ sở dữ liệu khác nhau trên máy chủ mongodb của tôi cho mỗi yêu cầu, dựa trên miền yêu cầu. Mã chạy, nhưng nó dường như không thực sự thay đổi nguồn dữ liệu. Thay vào đó, nó luôn luôn sử dụng một định nghĩa trong datasources.json của tôi.Loopback Multitenancy Database Swap

Hiện tại, đây là những gì tôi đang làm. Tất cả các mô hình của tôi tham chiếu "my_db" và tôi muốn có một cơ sở dữ liệu trên máy chủ mongo của tôi cho mỗi người thuê.

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

     }); 

Có ai có ý tưởng nào không? Đây có phải là một cách ngớ ngẩn để làm nhiều người thuê nhà không?

Cảm ơn!

+1

'Người thuê nhà' trong mã của bạn ở trên là gì? – jakerella

+0

Bạn đã bao giờ tìm được giải pháp chưa? –

Trả lời

1

Tôi thực hiện dự án này. Tôi là một thay thế.

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

+0

Paulo tôi đã thử nghiệm dự án của bạn với điều này: 'cuộn tròn --data "username = paulomcnally1 & message = Hello world" http://127.0.0.1:4000/demo1/tweets & cuộn tròn --data "username = paulomcnally2 & message = Hello world" http : //127.0.0.1: 4000/demo2/tweets & '. Cả hai tweet được viết trên cơ sở dữ liệu demo2. Có vấn đề gì với đồng thời hay tôi đang làm gì sai? – Musma