2015-07-03 47 views
1

我正在創建一個Sails應用程序,我需要對模型數據庫的事務進行面板管理。關鍵是,後端架構和數據管理需要Sails應用程序中相同模型的不同數據庫。如何讓Sails模型指向不同的數據庫?

所以,我的模型是這樣的:

module.exports = { 

    connection: 'seasonDB', 
    autoPK: false, 

    attributes: { 
    id: { 
     type: 'string', 
     primaryKey: true, 
     required: true 
    }, 
    avatar: { 
     type: 'string', 
     defaultsTo: '' 
    }, 
    price: { 
     type: 'integer', 
     defaultsTo: function() { 
     var prices = [ 7000000, 5000000, 4000000, 2500000, 1000000 ]; 
     return prices[_.random(prices.length -1)]; 
     } 
    }, 
    description: { 
     type: 'string', 
     defaultsTo: '' 
    }, 
    status: { 
     type: 'string', 
     enum: ['suspended', 'inSquad','injured','out'] 
    } 
    } 
}; 

'seasonDB'config/connections.js定義:

seasonDB: { 
    adapter: process.env.SEASON_DB_ADAPTER, 
    host: process.env.SEASON_DB_HOST, 
    port: process.env.SEASON_DB_PORT, 
    user: process.env.SEASON_DB_USER, 
    password: process.env.SEASON_DB_PASSWORD, 
    database: process.env.SEASON_DB_DB 
    } 

那麼,有沒有什麼辦法來改變環境變量並以某種方式與重新加載模型重新加載整個應用程序?

回答

3

有一個名爲sails-hook-autoreload的sails.js鉤子。它跟蹤控制器,模型的變化並應用更改,而無需手動重新加載。您可以嘗試使用它或僅爲模型創建類似的東西。

+0

但是,這將重新加載整個應用程序,租賃任何正在進行的HTTP請求,對不對? – diegoaguilar

+1

其實它不會重新加載應用程序。它將重新啓動orm hook並重新綁定路由。所以只有這個鉤子會被重新加載。但我的建議是刪除與掛鉤路由相關的功能。 –

+0

所以你的意思是:*使用鉤子將重新加載ORM並將其配置爲保持路由不變* – diegoaguilar